递归是一种自顶向下的方法,直到方法知道如何解决最简单的问题,递归算法需要一个线性的空间开销,并且需要不断的压栈与出栈。一般来讲,非递归算法的资源开销比递归算法低。那么,我们如何实现阶乘的非递归的算法呢?我们只需要反过来想,既然递归采用的是自顶向下的方法,那么我们非递归就可以采用自底向上的方法来实现
#include<iostream> using namespace std; int JieCheng(int num); void main() { int num; cout<<"请输入要计算阶乘的数字"<<endl; cin>>num; num=JieCheng(num); cout<<"阶乘的结果是:"<<num<<endl; system("pause"); } int JieCheng(int num) { int first=1; int second=2; int result=1; if(num==0||num==1) { return result; } else { while(num>1) { result=first*second; first=result; second=second+1; --num; } } return result; }
转载于:https://blog.51cto.com/seanyxie/1375922
1094

被折叠的 条评论
为什么被折叠?



