当前位置:  首页>> 技术小册>> 数据结构与算法(下)

题目描述

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

解法

跳上 n-1 级台阶,可以从 n-2 级跳 1 级上去,也可以从 n-3 级跳 2 级上去…也可以从 0 级跳上去。那么

  1. f(n-1) = f(0) + f(1) + ... + f(n-2)

跳上 n 级台阶,可以从 n-1 级跳 1 级上去,也可以从 n-2 级跳 2 级上去…也可以从 0 级跳上去。那么

  1. f(n) = f(0) + f(1) + ... + f(n-2) + f(n-1)
  2. ②-①:
  3. f(n) - f(n-1) = f(n-1)
  4. f(n) = 2f(n-1)

所以 f(n) 是一个等比数列:

  1. f(n) = 2^(n-1)
  1. /**
  2. * @author bingo
  3. * @since 2018/11/23
  4. */
  5. public class Solution {
  6. /**
  7. * 青蛙跳台阶II
  8. * @param target 跳上的那一级台阶
  9. * @return 多少种跳法
  10. */
  11. public int JumpFloorII(int target) {
  12. return (int) Math.pow(2, target - 1);
  13. }
  14. }

测试用例

  1. 功能测试(如输入 3、5、10 等);
  2. 边界值测试(如输入 0、1、2);
  3. 性能测试(输入较大的数字,如 40、50、100 等)。

该分类下的相关小册推荐: