青蛙跳台阶

一、一只青蛙一次可以跳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)

 

  

原文地址:https://www.cnblogs.com/cnn-ljc/p/12712965.html