• 青蛙跳台阶


    一、一只青蛙一次可以跳1级台阶,也可以跳2级台阶,计算该青蛙跳上一个n级台阶总共有多少种跳法

    第一种方法:(python)

    def f(n):
        t1=1 
        t2=2 
        s=0
        for i in range(3,n+1):
            s=t1+t2
            t1=t2
            t2=s
        return s
    def jump(n):
        if n<=2:
            return n
        else:
            return f(n)
    n = eval(input())
    s = jump(n)
    print(s)
    

     

    第二种方法:(python)  使用递归方法,这种方法虽然简单,但效率低,会超过时间上限

    def tf(n):
        if n==1:
            return 1
        elif n==2:
            return 2
        else:
            return tf(n-1)+tf(n-2)
     
    n = int(input('请输入台阶数(正整数):'))
    tf_n = tf(n)
    print(tf_n)
    

    第三种方法:(Python)用循环代替递归,比第二种方法的代码效率上有较大的提升

    def climbStairs(n):
        if n==1 or n==2:
            return n
        a=1;b=2;c=3
        for i in range(3,n+1):
            c=a+b;a=b;b=c
        return c
        
    n = int(input('请输入台阶数(正整数):'))
    climbStairs_n = climbStairs(n)
    print(climbStairs_n)
    

      

    第四种方法:(python)利用组合数公式

    def climbStairs(n):
        def fact(n):
            result=1
            for i in range(1,n+1):
                result*=i
            return result
        total=0
        a=int(n/2+1)
        for i in range(a):
            total+=fact(i+n-2*i)/fact(i)/fact(n-2*i)
        return total 
        
    n = int(input('请输入台阶数(正整数):'))
    climbStairs_n = climbStairs(n)
    print(climbStairs_n)
    

      

    第五种方法:(C语言)

    # include <stdio.h>
    int tiaofa(int n)
    {
        int i, tf1, tf2, tf3;
        tf1 = 1;
        tf2 = 2;
        
        if (n == 1)
            tf3 = 1;
        else if (n ==2)
            tf3 = 2;
        else
        {
            for (i=3; i<=n; i++)
            {
                tf3 = tf1 + tf2;
                tf1 = tf2;
                tf2 = tf3;
            }
        }
        
        return tf3;
    }
     
    int main(void)
    {
        int n;
        char ch;
        do
        {
            printf("请输入台阶数(正整数):");
            scanf("%d", &n);
            printf("%d个台阶有%d种跳法。
    ", n, tiaofa(n));
            printf("
    你想继续吗(Y/N):");
            flushall();
            scanf("%c", &ch);
        } while (ch=='y' || ch=='Y');
        return 0; 
    }
    

    二、一只青蛙一次可以跳上1级台阶,可以跳上2级台阶,.......,也可以跳上n级台阶,计算该青蛙跳上一个n级台阶总共有多少种跳法

    def jumpFloorII(number):
        if number == 0:
            return 0
        if number == 1:
            return 1
        a = 1
        ret = 1
        for i in range(2,number+1):
            ret = 2 * a
            a = ret
        return ret
        
    number = int(input('请输入台阶数(正整数):'))
    climbStairs_n = jumpFloorII(number)
    print(climbStairs_n)
    

     

      

  • 相关阅读:
    EZchip花1.3亿美元买Tilera然后以8亿美元把自己与Tilera一起卖掉
    [OFC]Mellanox发布首个200Gb/s硅光子设备
    Mellanox 8亿美元收购EZchip
    EZchip将推全球首款100核64位ARM A-53芯片
    MyBatis映射文件5
    MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])
    MyBatis源码分析1 参数映射分析
    MyBatis映射文件3(参数处理Map)
    MyBatis映射文件2(不支持自增的数据库解决方案/参数处理[单参、多参、命名参数])
    MyBatis映射文件1(增删改、insert获取自增主键值)
  • 原文地址:https://www.cnblogs.com/cnn-ljc/p/12712965.html
Copyright © 2020-2023  润新知