用C语言编程,有20级台阶的楼梯,一次可以迈一级或者俩级台阶,那么要爬完此台阶有几种方法?(需要用

用C语言编程,有20级台阶的楼梯,一次可以迈一级或者俩级台阶,那么要爬完此台阶有几种方法?(需要用高数递归调来实现。)

// 兵无常势,水无常形,情景模拟,递归实现
#include <stdio.h>
int count = 0;
void step(int s, int t)
{
    if (s < t)
    {
        step(s+1,t);
        step(s+2,t);
    }
    else if (s == t)
    {
        count ++;
    }
}
void main()
{
    int n;
    printf("Input n: ");
    scanf_s("%d",&n);
    step(0, n);
    printf("The total path is %d\n", count);
    scanf_s("%c",&n);
    getchar();

// 用step函数表示爬楼梯的动作,step(爬)(所到层,总层)
// 爬到了吗?没有,再爬一层或两层,
// 爬到了吗?是的,方法加一。 明白吗? 欢迎提问

追问

恩 我现在打来软件试试

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-18
#include "stdio.h"
int climb(int remain){
  if(remain==1)  return 1;  
  if(remain==2)  return 2;
  return climb(remain-1)+climb(remain-2);
}
int main(int argc,char **argv){
  printf("%d\n",climb(20));
  return 1;
}

追问

大哥,可以给做点注释吗?我是新手谢谢老师

你看这个怎么样?

追答

if(只有一级台阶){爬上去的方式是1种。}
if(只有两级台阶){爬上去的方式是2种。}
更多的台阶:
爬上去的方式是
第一步跨一级的方式数目 + 第一步跨两级的方式数目

追问

谢谢您了

追答

不客气。只是可以这样理解,但也许是
最后一步跨一级的方式数目 + 最后一步跨两级的方式数目哦?
你要尝试输出一下爬楼梯的次序才会真正明白递归。

追问

嗯嗯

本回答被提问者采纳
第2个回答  2019-07-08
#include<stdio.h>
int c(int n)
{
if(n==1)return 1;
if(n==2)return 2;
return (c(n-1)+c(n-2));
}
int main()
{
printf("%d",c(20));
}
10946 公式c(n)=c(n-1)+c(n-2),c(1)=1,c(2)=2
第3个回答  2013-12-18
貌似是到概率题,一个式子就出来了。追问

没有和概率没有关系

第4个回答  2013-12-18
西湖观柳 厉害。。。追问

我仔细看,有些看不懂呜呜:'(

追答

把20步改成2步,3步,4步,迭代进去试试,想通了20步就是一个道理。

追问

哦 好的