黑马程序员技术交流社区

标题: 关于递归的一道题目(绝对原创哦) [打印本页]

作者: Sniper_YJ    时间: 2014-5-16 00:23
标题: 关于递归的一道题目(绝对原创哦)
题目标题: 第39级台阶  
    小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!  
    站在台阶前,他突然又想着一个问题:  
    如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
下面是正确的代码,由于没写注释,所以有不懂的可以在下面留言
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int c=0;
  4. int dps(int a,int b)
  5. {
  6.      
  7.     if(a==39&&b==0)
  8.     {
  9.         c++;
  10.     }
  11.     else if(a<39)
  12.     {
  13.         b=!b;
  14.         dps(a+1,b);
  15.         dps(a+2,b);
  16.     }
  17. }
  18. int main()
  19. {

  20.     dps(0,0);
  21.     printf("%d",c);
  22.     system("pause");
  23.     return 0;
  24. }
复制代码
第一次写错的代码
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int dps(int a,int b)
  4. {
  5.     int c=0; //第二个错误
  6.     while(a>=0) //这里是第一个错误
  7.     {   
  8.         if(a==0&&b==1)
  9.         {
  10.             c++;//这里应该有一个结束语句 return 0;
  11.         }
  12.         else //条件限制应该写在这个地方
  13.         {
  14.             b=!b;
  15.             dps(a-1,b);
  16.             dps(a-2,b);
  17.         }
  18.     }   
  19.     return c; //如果这样写的话会直接返回0
  20. }
  21. int main()
  22. {
  23.     int x;
  24.     x=dps(39,1);
  25.     printf("%d",x);
  26.     system("pause");
  27.     return 0;
  28. }
复制代码






作者: 李稳    时间: 2014-5-16 17:44
哈哈,所以没留言的都看懂了吼~~:lol
作者: 无尽可能    时间: 2014-5-18 18:22
没看懂,加下注释吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2