码迷,mamicode.com
首页 > 其他好文 > 详细

跳台阶问题

时间:2018-10-16 13:52:44      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:name   std   main   方法   code   color   space   ...   str   

一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。

问题分析:

 

1 f(n) = f(n-1)= 1 n=1 
2 f(n) = 1+1 = 2 n=2 当第一次跳一个台阶时,有一种方法,当第一次跳两个台阶时有一种方法 
3 f(n) = 2+1 =3 n=3 当第一次跳一个台阶时有f(3-1)中方法,当第一次跳两个台阶时有f(3-2)中方法 
4 因此,
5 f(n) = f(n-1)+f(n-2) n>2 
 1 //跳台阶问题
 2 /**
 3     一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。
 4 */
 5 
 6 #include <iostream>
 7 
 8 
 9 using namespace std;
10 
11 #define NUM 2
12 int steps[NUM] = {1, 2};
13 
14 
15 int calPermNum(int num)
16 {
17     if(num == 1)
18         return 1;
19     else if(num == 2)
20         return 2;
21     else
22         return calPermNum(num -1) + calPermNum(num - 2);
23 }
24 
25 int main()
26 {
27     cout << calPermNum(3) << endl;
28     return 0;
29 }

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

 1 f(n) =f(n-1)= 1 n=1 
 2 
 3 f(n) = 1+1 = 2 n=2 当第一次跳一个台阶时,有一种方法,当第一次跳两个台阶时有一种方法 
 4 
 5 f(n) = 2+1 =3 n=3 当第一次跳一个台阶时有f(3-1)种方法,当第一次跳两个台阶时有f(3-2)种方法,当第一次跳3个台阶时有1种跳法 
 6 
 7 因此 
 8 
 9 f(n) = f(n-1)+f(n-2)+......f(1)+1种跳法
10 f(n-1) = f(n-2)+f(n-3)+.....f(1)+1
11 f(n)-f(n-1)=f(n-1)
12 所以f(n) = 2*f(n-1)  n>2 
 1 //跳台阶2
 2 //一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 #define NUM 2
 8 int steps[NUM] = {1, 2};
 9 
10 
11 int calPermNum(int num)
12 {
13     if(num == 1)
14         return 1;
15     else if(num == 2)
16         return 2;
17     else
18         return 2*calPermNum(num-1);
19 }
20 
21 int main()
22 {
23     cout << calPermNum(5) << endl;
24     return 0;
25 }

 

跳台阶问题

标签:name   std   main   方法   code   color   space   ...   str   

原文地址:https://www.cnblogs.com/Long-w/p/9797099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!