猿问

C++ 求 n!

C++算n!用归递的算法好呢还是用循环的算法有什么区别啊最好有代码...

12345678_0001
浏览 881回答 2
2回答

拉莫斯之舞

简单的说:用循环语句代码要多写两行,用递归的话代码很少但很运行时很费时间。用循环语句写:int sum=0;for(int i=1;i<n;i++){sum *=i;}用递归的话就是:int f(int n ){if (n==0) return 1;else return n*f(n-1);}

动漫人物

dayuch2003的代码问题:1.在n比较小时可以,但是当n=800时,就会栈溢出,导致程序出错。2.对于输入的0,返回错误的结果。下面的代码对这个进行了改进。#include <iostream>using namespace std;int fun(int a,double sum);int main(){int x;cout<<"请输入一个整数:";cin>>x;cout<<"n!=";if(x==0) //如果输入为0,直接返回结果cout<<0<<endl;elsecout<<fun(x,1)<<endl;system("pause");return 0;}int fun(int a,double sum){if(a<1)return sum;elsereturn fun(a-1,sum*a);}----------------------------------------------------递归调用会在栈上分配空间,每递归一次就分配一定空间,如果递归深度足够大,肯定会造成栈溢出。而循环就不会涉及到栈的操做,从效率和空间上考虑推荐使用循环。
随时随地看视频慕课网APP
我要回答