最近在读杨峰老师的妙趣横生的算法;看到第3.8章中上楼梯问题,杨峰老师使用了回溯法得出最后的结果,我自己用递归函数写了个小程序,感觉思路挺顺的,就发表出来,本人是个刚出校门的大学生,有什么不对的希望各位指正。

先看看问题:
已知楼梯有20阶台阶,上楼可以一步上一步,也可以一步上两步,请编写一个程序,计算共有多少种不同的上楼方法。

以下是代码:

#include <stdio.h>

int nums(int high) { //high是楼梯的高度,num是不同上楼梯方法的种数
static int num = 0;
if (high > 0) {
nums(high - 1); //递归调用函数,从都是一步,慢慢到都是两步
nums(high - 2);
}
if (high == 0) { //楼梯高度正好是0时,就完成了一种下楼的方法。
num++;
}
return num;
}

int main() {
printf("%d", nums(20));
return 0;
}

杨峰老师给的答案是10946;

下面是这个小程序运行的结果:
上楼梯问题
这是一个老问题,成熟的想法有很多,我自己突然想出来有点小激动,就算记录一下自己的成长。谢谢大家。

相关文章:

  • 2021-08-14
  • 2021-08-14
  • 2021-06-27
  • 2021-12-31
  • 2021-12-30
  • 2020-04-25
  • 2020-02-21
  • 2021-12-21
猜你喜欢
  • 2021-05-28
  • 2021-06-14
  • 2018-06-13
  • 2021-08-03
  • 2018-02-22
  • 2019-11-29
  • 2021-12-21
  • 2021-10-14
相关资源
相似解决方案