Go语言实现:【剑指offer】变态跳台阶

该题目来源于牛客网《剑指offer》专题。

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

找规律:
1阶:1种;
2阶:2种;
3阶:4种;
4阶:8种;
n阶:2f(n-1)种;

或者:
n-1阶:f(n-2)+f(n-3)+…f(1)+f(0)
n阶:f(n-1)+f(n-2)+…f(1)+f(0) => 2f(n-1)

得出一个斐波那契函数。

Go语言实现:
方法一:递归

func jumpFloor2(N int) int {
   if N <= 0 {
      return 0
   }if N == 1 || N == 2 {
      return N
   }return 2 * jumpFloor2(N-1)
}

方法二:迭代

func jumpFloor2(N int) int {
   if N <= 0 {
      return 0
   }if N == 1 || N == 2 {
      return N
   }
​
   b := 2
   for i := 3; i<= N;i++ {
      b = 2 * b
   }
   return b
}
posted @ 2019-12-08 21:36  南方有嘉木1993  阅读(134)  评论(0编辑  收藏  举报