问设有50个台阶的楼梯, 若一个人上楼梯跨出一步有三种迈法:一次上1个台阶, 一次上2个台阶, 一次上3个台阶。 问总共有多少种不同的上楼方式?
考虑他迈最后一步的情况, 即最后一步上了1个台阶, 也可能上了2个台阶, 也可能上了3个台阶。
Last step=1 -> 前边有(50-1) 个台阶-> 49个台阶有多少种上楼方式
Last step=2 -> 前边有(50-2) 个台阶 -> 48个台阶有多少种上楼方式
Last step=3 -> 前边有(50-3) 个台阶 -> 47个台阶有多少种上楼方式
所以, 50个台阶情况=49个台阶的情况+48个台阶的情况+47个台阶的情况
考虑开始,*--1*2指一次迈2个台阶
1个台阶 -> 1种方式(1*1)
2个台阶 -> 2种方式(1*1+1*1,1*2)
3个台阶 -> 4种(1*3, 1*1+1*2, 1*2+1*1, 1*1+1*1+1*1)
static int Matrix(int n)
{
if (n < 1)
return 0;
if (n == 1)
return 1;
else if (n == 2)
return 2;
else if (n == 3)
return 4;
else
return Matrix(n - 3) + Matrix(n - 2) + Matrix(n - 1);
}
{
if (n < 1)
return 0;
if (n == 1)
return 1;
else if (n == 2)
return 2;
else if (n == 3)
return 4;
else
return Matrix(n - 3) + Matrix(n - 2) + Matrix(n - 1);
}