一个VB编程问题,用递归算法解决

来源:百度知道 编辑:UC知道 时间:2024/05/04 15:52:08
某同学在上楼梯时,有时一步一级楼梯,有时一步两级楼梯,如果楼梯有N级,他上玩这N级楼梯有多少种不同方法?
讲讲思路.谢谢!!

假设楼梯级数为N时的方法数是F(N),那么第一步可选择1或2级楼梯。当第一步为1级时剩下楼梯的级数为N-1,故方法数为F(N-1);当第一步为2级时,剩下楼梯的级数为N-2,故方法数为F(N-2)。

Function F(ByVal n As Integer)As Long
F=IIf(n<=2,n,F(n-1)+F(n-2))
End Function

楼上说的对的,我再解释一下吧

当还没下楼的时候,可以把事情分成,下一步的方法加下两步的方法之和
当然,下一步和下两步后有多少种方法还没求出来,但分别都可以用上面的方法继续递推下去,直到走到楼下为止
int fun(int a)
{
if(a==1) return 1;
if(a==2) return 2;
else return fun(a-1)+fun(a-2);
}