跳台阶

2018-10-23  本文已影响0人  小码弟

问题描述:🐸一次可以跳1级台阶,也可以跳2级台阶,问🐸跳上n级台阶有多少种跳法。

寻找递推关系:
1.如果第一次跳1阶,那剩下的可能跳法有F(n-1)种。

  1. 如果第一次跳2阶,剩下F(n-2)种跳法。
  2. 由(1)、(2)推知,F(n) = F(n-1) + F(n-2),其中F(1) = 1, F(2) = 2

迭代版

int jumpFloor(int n)
{
  if(n<1)
    return 0;
  if(n==1 || n==2)
    return n;
  int f1 = 1;
  int f2 = 2;
  int count = 3;
  int res = 0;
  while(count<=n)
  {
    res = f1+f2;
    f1 = f2;
    f2 = res;
  }
  return res;
}

递归版

int jumpFloor(int n)
{
  if(n == 1 || n == 2)
      return n;
  else
      return jumpFloor(n-1) + jumpFloor(n-2);
}
上一篇下一篇

猜你喜欢

热点阅读