猿问
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);}
0
0
0
动漫人物
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);}----------------------------------------------------递归调用会在栈上分配空间,每递归一次就分配一定空间,如果递归深度足够大,肯定会造成栈溢出。而循环就不会涉及到栈的操做,从效率和空间上考虑推荐使用循环。
0
0
0
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
我要回答