c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?相关的知识,希望对你有一定的参考价值。

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?

解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2);因此n级台阶时的跳法为f(n)=f(n-1)+f(n-2)。不难看出这实际是斐波拉契数列的变形应用,把斐波拉契数列的每一项向前移动了1位。

程序:

#include<stdio.h>


int fibonacci(int n)

{

int num1 = 1, num2 = 1, num3 = 0, i = 0;

if (n <= 1)

{

return num1;

}

for (i = 1; i < n; i++)

{

num3 = num1 + num2;

num1 = num2;

num2 = num3;

}

return num3;

}


int main()

{

int num = 0, ret = 0;

printf("请输入台阶数:");

scanf("%d", &num);

ret = fibonacci(num);

printf("总共有%d种跳法!\n",ret);

return 0;

}


结果:

请输入台阶数:3

总共有3种跳法!

请按任意键继续. . .

拓展: 一只青蛙一次可以跳上1级台阶,也可以跳上2级,......它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?

解:我们可以用数学归纳法求得共有f(n)=2^(n-1)种跳法

程序:

#include<stdio.h>

#include<math.h>


int fibonacci(int n)

{

return pow(2,n-1);

}


int main()

{

int num = 0, ret = 0;

printf("请输入台阶数:");

scanf("%d", &num);

ret = fibonacci(num);

printf("总共有%d种跳法!\n",ret);

return 0;

}

结果:

请输入台阶数:3

总共有4种跳法!

请按任意键继续. . .


本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1742286

以上是关于c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?的主要内容,如果未能解决你的问题,请参考以下文章

青蛙跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)

剑指Offer变态跳台阶

剑指Offer-Java-变态跳台阶