题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
今天的题目是变态跳台阶,昨天是跳台阶,昨天跳台阶只有两种跳跃类别,再加上题目的提示,猜到了f(n)=f(n-1)+f(n-2)这个关系,实话实说,这是投机取巧,猜到了解法也只是知其然而不知其所以然,所以今天这个题就麻爪了,搜呗,搜到一大神,将其所以然解释清楚了,大神的链接如下:
https://blog.csdn.net/u013408863/article/details/106008031/
虽然大神解释的青蛙只能跳1级和2级的情况,但我们可以以此类推啊,那青蛙最后一跳跳3个台阶的跳法就是f(n-3)种,最后一跳跳4个台阶的跳法就是f(n-4)种,直到最后一跳跳n个台阶的时候,就是直接跳到最后,就1种,所以可以得出f(n)=f(n-1)+f(n-2)+f(n-3)+...+1。由此,我们就可以代码实现了。
#代码
class Solution { public: int jumpFloorII(int number) { int total = 0; if (number == 1) { return total+1; } else { for (int i = 1; i< number; i++) { total += jumpFloorII(i); } } return total + 1; } };