栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过c语言和java的递归来实现青蛙跳台的问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过c语言和java的递归来实现青蛙跳台的问题

问题描述:一只青蛙一次能够跳1阶或者2阶台阶,一共有n阶台阶
 这只青蛙一共有几种跳法

当我们一开始看到此问题时肯定会一下子摸不到头脑,没有想法,既然这样我们尝试使用笨办法来寻找其中的规律

当台阶数为1时只有一种跳法,台阶数为2时则有两种

台阶数为3时,则需要分类了

青蛙第一次跳1阶,则剩下了2阶,那么与台阶数总共为2阶的跳法相同(两种)

当青蛙第一次跳2阶时,则剩下了1阶台阶,那么就与总台阶数为1阶时相同(一种)

由上述可知台阶数为3时跳法为3

设总台阶数为:n , 跳法:sum

通过上述,我们可以总结出一个规律,除了第一二级台阶其余的台阶数的跳法为:n-1时的台阶数跳法加上n-2时的台阶数跳法

                        台阶数:n            跳法:sum

                                      1                         1

                                      2                         2

                                      3                         3

                                      4                         5

                                      5                         8

当我们使用递归的思路来实现青蛙跳台阶问题时

其实与高中学习的分类用加类似

c语言的实现如下:

#include
int jump(int n)
{
	if (n == 1)
	{
		return 1;
	}
	if (n == 2)
	{
		return 2;
	}
	return jump(n - 1) + jump(n - 2);
}
int main()
{
	int n = 0;
	scanf_s("%d", &n);
	int ret = jump(n);
	printf("%d", ret);
	return 0;
}

java的实现如下:

public class TestDemo
{
    public static int jump(int n)
    {
        if(n == 1)
        {
            return 1;
        }
        else if(n == 2)
        {
            return 2;
        }
        return jump(n-1)+jump(n-2);
    }
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int ret = jump(n);
        System.out.println(ret);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/726172.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号