一、一只青蛙一次可以跳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", n, tiaofa(n));
printf("\n你想繼續嗎(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.uj5u.com/houduan/158294.html
標籤:Python
下一篇:雞兔同籠
