递归与迭代
求n的阶乘。(不考虑溢出)
int Fac1(int n)
{int i=0;int ret=1;for(i=1;i<=n;i++){ret*=i;}return ret;
}
int main(){//求n的阶乘int n=0;int ret=0;scanf("%d",&n);ret=Fac1(n);printf("%d\n",ret);return 0;
}
int Fac2(int n)
{if(n<=1)return 1;elsereturn n*Fac2(n-1);
}
int main(){//求n的阶乘int n=0;int ret=0;scanf("%d",&n);ret=Fac2(n);printf("%d\n",ret);return 0;
}
斐波那契数列
1 1 2 3 5 8 13 21 34 55 ......
//
int count=0;int Fib(int n){if(n==3)//从第三个开始计算多少个数{count++;}if(n<=2){return 1;}else return Fib(n-1)+Fib(n-2); 
}
int main()
{int n=0;int ret=0;scanf("%d",&n);//TDD -测试驱动开发ret=Fib(n);printf("ret=%d\n",ret);printf("count=%d\n",count);return 0;
}
算出第46个数字需要计算7亿次,多磨夸张吧
int Fib(int n){
     int a=1;
     int b=1;
     int c=1;
     while(n>2){
         c=a+b;
         a=b;
         b=c;
         n--;
     }
     return c;
 }
 int main(){
     int n=0;
     int ret=0;
     scanf("%d",&n);
     ret =Fib(n);
     printf("ret=%d\n",ret);
     return 0;
 }
第50个是负数
void test(int n)
 {
     if(n<10000)
     {
         test(n+1);
     }
 }
 int main()
{test(1);
     return 0;
 }
自己研究汉诺塔问题
青蛙跳台阶
n个台阶
1次可以跳1个台阶
1次也可以跳2个台阶
这只青蛙要跳第n个台阶,有多少种跳法。