递归和递推解决爬楼梯问题
2012-08-28 11:21
169 查看
题目:楼梯一次可以爬1级,也可以爬2级,有N级楼梯,有多少种走法?
看到此题首先找出规律
1 走到第1级,有1种方法
2 走到第2级,有2种方法
3 走到第3级,有3种方法
4 走到第4级,有5种方法
5 走到第5级,有8种方法
以此类推,后面的总等于前面两级方法之和,现在使用递归和递推两种方法解决本问题
利用递归实现
利用递推实现,编译时注意要加上 -std=c99
看到此题首先找出规律
1 走到第1级,有1种方法
2 走到第2级,有2种方法
3 走到第3级,有3种方法
4 走到第4级,有5种方法
5 走到第5级,有8种方法
以此类推,后面的总等于前面两级方法之和,现在使用递归和递推两种方法解决本问题
利用递归实现
#include <stdio.h> int climb(int pos) { if(1 == pos) return 1; else if(2 == pos) return 2; else return (climb(pos-1)+climb(pos-2)); } int main() { int stair = 0; printf("Please Input:"); scanf("%d", &stair); printf("Result:%d\n", climb(stair)); return 0; }
利用递推实现,编译时注意要加上 -std=c99
#include <stdio.h> int main() { int size; printf("Please Input:"); scanf("%d", &size); int stair[size]; stair[0] = 1; stair[1] = 2; for(int i=2; i<size; i++) { stair[i] = stair[i-1]+stair[i-2]; } printf("Result:%d\n", stair[size-1]); return 0; }
相关文章推荐
- 0/1背包问题(递归解决,递推解决)
- 使用递推和递归解决斐波那契数列问题~~~
- 利用递归思想解决问题
- 用递归解决oj上的导弹防御系统问题
- 利用递归下降分析解决表达式求值问题之noj35
- 汉诺塔问题是使用递归解决问题的经典范例。
- @JsonIgnoreProperties解决jackson 序列化Hibernate entity类无限递归的问题
- 递归:解决汉诺塔问题(数据结构3.2 P103)
- 回溯解决爬楼梯问题
- 递归解决汉诺塔问题
- 兔子繁殖问题(递归解决)
- 在C# 中不使用递归解决“数独”问题的一种方案
- dfs 递归思想 解决排列组合的一些基础问题
- 分形问题 递归打印解决 另附hrbust 2291 题目
- 使用递归解决斐波那契数列的性能问题
- 利用递归思想解决问题
- 递归思想----解决饮料问题
- 3行核心代码解决汉诺塔问题(C++递归实现)
- IO流_递归解决问题的思想及图解
- 递归解决汉诺塔问题