楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法?
【参考解答(递归法)】
基础:楼梯有一个台阶,只有一种走法(一步登上去);两个台阶,有2种走法(一步上去,或分两次上去);
递推:有n个台阶时,设有count(n)种走法,最后一步走1个台阶,有count(n-1)种走法;最后一步走2个台阶,有count(n-2)种走法。于是count(n)=count(n-1)+count(n-2)。
可见,此问题的数学模型竟然是斐波那契数。
#include<stdio.h>int main()
{ unsigned long count(int n) int n unsigned long m printf("请输入楼梯的阶数:") scanf("%d",&n)
m=count(n) printf("有%lu种爬楼梯的方法\n",m) return 0
}unsigned long count (int n)
{ unsigned long f if(n==1)
f=1 else if(n==2)
f=2 else
f=count(n-1)+count(n-2) return(f)
}1234567891011121314151617181920212223
Private Sub Command1_Click()
Dim n As Integer
n = InputBox("N=")
a = 1
b = 1
c = 1
For i = 3 To n
c = a + b
a = b
b = c
Next i
Print n"步楼梯共有"c"步走法"
End Sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)