黑马程序员技术交流社区
标题:
关于递归的一道题目(绝对原创哦)
[打印本页]
作者:
Sniper_YJ
时间:
2014-5-16 00:23
标题:
关于递归的一道题目(绝对原创哦)
题目标题: 第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;
}
复制代码
作者:
李稳
时间:
2014-5-16 17:44
哈哈,所以没留言的都看懂了吼~~:lol
作者:
无尽可能
时间:
2014-5-18 18:22
没看懂,加下注释吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2