/*用递归的方式求n! (n>=0)*/intFact(int n){if(n <=1)/*限制条件*/{return1;}else{return n *Fact(n -1);/*容易发现每一次递归都越来越接近限制条件*/}}intmain(){int n =0;scanf("%d",&n);int ret =Fact(n);printf("%d的阶乘是%d\n", n, ret);return0;}
intF(int n){int a =1, b =1, c =0;if(n <=2){return1;}else{for(int i =1; i <= n -2; i++){
c = a + b;
a = b;
b = c;}return c;}}intmain(){int n =0;scanf("%d",&n);int ret =F(n);printf("%d\n", ret);return0;}
方法1中的F(n)函数稍稍有些复杂,下面用通过另外一种方法对F(n)函数进行简化。
intF(int n){int a =1, b =1, c =1;/*n=3时循环一次
n=4时循环两次
依此类推
*/while(n >2){
c = a + b;
a = b;
b = c;
n--;}return c;}