青蛙跳台阶问题简单实现:学习递归必要掌握题型之一

引言:

        我们在C语言的学习过程中都会遇到递归这一基础用法,在函数里面调用函数;

在此处我将递归的一些我们会接触到的题型进行解释分享;

问题简述:

        现在有一个青蛙,它一次跳跃可以跳1个台阶或者两个台阶;

        给定台阶  阶数n;求出有几种跳法;

         乍看一下还是非常简单的,现在我们来安照递归的思想来实现;

问题解决:

            在这里我分享一下我的简单的思路;首先,它每次跳都会有两种情况;根据对递归的理解,我们可以将每次跳台阶作为一个简单的单一的过程进行分割,实现递归思想的实现:

       给大家画个草稿做个简单理解:

通过这个图我们可以清晰地发现,它的每次的跳跃实现,是对+1 +2的一个选择;最后检测结果是否等于这个阶数,和等于这个阶数的情况的检测;最后在这个自定义函数中返回这个值;

           在通过这个思路,我再进行了进一步的思考,我发现可以进行逆向的实现,以减少变量的使用,这里依旧以草稿的形式给大家呈现:

        

 ok  我们将这个的实现进行的逆向的处理;改为检测0的出现次数,再返回值;

C语言代码实现:

#include <stdio.h>
int main()
{
	int n, count = 1;
	int run(int n);
	printf("请输入要跳几阶:");
	scanf_s("%d", &n);
    count = run(n);
	printf("一共有%d可能!", count);
	return 0;
}
int run(int n)
{
	int count = 0;
	if(n - 1 == 0 || n - 2 == 0)
		 count++;
	if (n - 1 > 0)
		 count += run(n - 1);
	if (n - 2 > 0)
		 count += run(n - 2);
	return count;
}

在此处,我通过定义一个count进行计数,以及run函数里面的递归实现;

ps:如果大家觉得有用的话,点赞加收藏哦;另外如果有错误的地方的话,欢迎大家纠正,谢谢

同样,如果大家喜欢递归这一板块的话,同样可以订阅,谢谢;

另外:有个对递归的理解,大家可以看看:用阶乘实现对递归以及静态变了的理解(以及%g的理解)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值