A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sniper_YJ 中级黑马   /  2014-5-16 00:23  /  1505 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目标题: 第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. }
复制代码





2 个回复

倒序浏览
哈哈,所以没留言的都看懂了吼~~:lol
回复 使用道具 举报
没看懂,加下注释吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马