青蛙跳台阶问题的两种解法

青蛙跳台阶问题

问:一只青蛙一次可以跳1层台阶一次也可以跳2层台阶,问青蛙跳到第n层台阶一共有多少种跳法?
解:
思路:n=1 1种可能
           n=2 2种可能
           n=3 3种可能
           n=4 5种可能
           n=5 8种可能
           …
           f(n)=f(n-1)+f(n-2)
解法一:递归

#include<stdio.h>
int step(int n)
{
    
    
	if (n <= 2)
	{
    
    
		return n;
	}
	return step(n - 1) + step(n - 2);
}
int main()
{
    
    
	int a = 5;
	printf("%d\n", step(a));
	return 0;
}

在这里插入图片描述
解法二:循环

#include<stdio.h>
int Step1(int n)
{
    
    
	if (n <= 2)
	{
    
    
		return n;
	}
	int a = 1, b = 2, c;
	int i = 2;
	while (i < n)
	{
    
    
		c = a + b;
		a = b;
		b = c;
		i++;
	}
	return c;
}
int main()
{
    
    
	int x = 5;
	printf("%d\n", Step1(x));
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50886514/article/details/110870965
今日推荐