由题目可知,每次只能走一级或两级。
因此从第一级走上第二级只能走一步,只有1种走法。
从第一级走上第三级,可以从第一级直接走两步,也可以从第二级走一步。有2种走法
走上第n级,可以从第n-1级走一步上来,也可以从第n-2级走两步上来。
因此从第一级走上第二级只能走一步,只有1种走法。
从第一级走上第三级,可以从第一级直接走两步,也可以从第二级走一步。有2种走法
走上第n级,可以从第n-1级走一步上来,也可以从第n-2级走两步上来。
即:
f(2) = 1
f(3) = 2
f(n) = f(n-1) + f(n-2) (n > 3)
是一个斐波那契函数。
数值可能很大,用unsigned long 可能溢出。要用__int64(VC++)或long long(GCC)
#include <stdio.h> int main(void) {int i, n;__int64 m[41] = {0, 1};for (i = 2; i < 41; i++)m[i] = m[i-1] + m[i-2];scanf("%d", &n);while (n-- && scanf("%d", &i))printf("%I64d\n", m[i]);return 0; }