递归----------上台阶问题
2018-02-07 11:42
141 查看
问题描述:
有一个楼梯,甲现在位于第0阶,每次可以上1阶,2阶,3阶,那么到达第N阶共有多少种走法?
思路:用递归的思想很容易解决,即
先上1个台阶后的上法+先上两个台阶的上法+先上三个台阶的上法
边界条件: 当台阶 n==0,即认为是有一种方法,即不上台阶,当n<0时,没有台阶也就认为方法为0
递归函数如下
但是由于是尾递归,效率极低,而且所有的尾递归都可以改写长迭代的方式,于是
迭代函数如下
有一个楼梯,甲现在位于第0阶,每次可以上1阶,2阶,3阶,那么到达第N阶共有多少种走法?
思路:用递归的思想很容易解决,即
先上1个台阶后的上法+先上两个台阶的上法+先上三个台阶的上法
边界条件: 当台阶 n==0,即认为是有一种方法,即不上台阶,当n<0时,没有台阶也就认为方法为0
递归函数如下
int statis(int n){ if (n<0) return 0; if(n == 0) return 1; return statis(n-1)+statis(n-2)+statis(n-3); }
但是由于是尾递归,效率极低,而且所有的尾递归都可以改写长迭代的方式,于是
迭代函数如下
int statis(int n) { int a1 = 1,a2 = 2,a3 = 4; int sum; if(n == 1)return a1; else if(n == 2) return a2; else if(n == 3 ) return a3; else{ for(int i = 4; i<=n;i++){ sum = a1+a2+a3; a1 = a2;a2 = a3; a3 = sum; } } return sum; }
相关文章推荐
- 问题一、走台阶问题(递归和动态规划)
- 跳台阶问题 + 变态跳台阶问题 解法(动态规划递归 + 非递归)
- 洛谷 1057——台阶问题(递推与递归二分)
- 递归大总结之台阶问题
- 27.跳台阶问题(递归)
- 奇妙的递归程序-----台阶问题
- 递归大总结之n台阶问题
- 跳台阶问题|斐波那契|递归
- 递归:跳台阶问题
- 普及练习场 递推与递归二分 台阶问题
- 递推与递归二分——台阶问题
- 递归问题,实例4,第39级台阶
- 跳台阶问题|斐波那契递归的复杂度问题|整数划分问题
- 跳台阶问题+变态跳台阶问题(动态递归+非递归)
- 跳台阶问题(递归)
- 菲波那切数列的递归与非递归解法以及青蛙跳台阶问题
- 递归之台阶问题
- 台阶问题递归优化
- 【重走普及路】【递归】台阶问题
- 【编程题目】跳台阶问题(递归)