zoukankan      html  css  js  c++  java
  • 递归特例 斐波那契数列 f(n)=f(n1)+f(n2)

    特例:有N个台阶 一次只能走1个台阶或者2个台阶,请问有几种走法

    int GetNum(int N)
    {
        if(N>2)
        {
            return GetNum(N-1)+GetNum(N-2);
        }
        else if(N==2)
            return 2;
        else if(N==1)
            return 1;
        else if(N==0)
            return 0;
    }

    但由于递归太慢,所以用循环好些:

    int GetNum1( int N)
    {
        if ( N<2)
            return 1;
        int v1=0, v2=1, cur =0;
        for ( int ix = 1; ix <= N; ++ix ) {
            cur = v1 + v2;
            v1 = v2;
            v2 = cur;
        }
        return cur;
    }

  • 相关阅读:
    简单题
    bzoj2131
    bzoj1706
    bzoj3531
    bzoj3744
    bzoj2724
    bzoj3343
    bzoj1005
    编程中、遇到问题、bug多思考
    线上系统奇怪问题总结,性能问题不能依赖经验
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1731884.html
Copyright © 2011-2022 走看看