题目标题: 第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
下面是正确的代码,由于没写注释,所以有不懂的可以在下面留言
- #include<stdio.h>
- #include<stdlib.h>
- int c=0;
- int dps(int a,int b)
- {
-
- if(a==39&&b==0)
- {
- c++;
- }
- else if(a<39)
- {
- b=!b;
- dps(a+1,b);
- dps(a+2,b);
- }
- }
- int main()
- {
- dps(0,0);
- printf("%d",c);
- system("pause");
- return 0;
- }
复制代码 第一次写错的代码- #include<stdio.h>
- #include<stdlib.h>
- int dps(int a,int b)
- {
- int c=0; //第二个错误
- while(a>=0) //这里是第一个错误
- {
- if(a==0&&b==1)
- {
- c++;//这里应该有一个结束语句 return 0;
- }
- else //条件限制应该写在这个地方
- {
- b=!b;
- dps(a-1,b);
- dps(a-2,b);
- }
- }
- return c; //如果这样写的话会直接返回0
- }
- int main()
- {
- int x;
- x=dps(39,1);
- printf("%d",x);
- system("pause");
- return 0;
- }
复制代码
|
|