数据结构与算法-递归算法

一.递归的理解

  递归,从字面意思来看,是传递过去之后再传递回来。

  一般来说,递归就是自己调用自己,例如我在书中看到“再看一遍书”的信息,接着,又进入看书的状态了,那就会无限递归,就是反复地去看。

  那我们什么时候可以结束递归,按照看书的例子来说,是不是自己看到印象深刻的时候,就可以停止了。所以,我们只要设置一个相应的条件,就不会出现无限递归的现象了。

  一般无限递归是这样的,虽然有返回语句,但是递归的思想是自己调用自己,相当于在同一地方转圈。如果不设置条件的话,就会一直待在同一个地方,也就是没有返回结果的现象。

  最经典的就是什么都没有,因为卡在一个地方,所以程序无法返回出结果了。
在这里插入图片描述

  最重要的是在实践中学习递归的精髓…

二.代码演练

通过条件的设置,可以利用递归返回自己想要看到的结果。

1.会变魔术的数字

#include<iostream> 
using namespace std;
//2.弄清递归原理即可 
int com(int x){
      //x的值为2 
	x--;   //x的值变为1 
	if(x==1){
     //x为1 走这一分支 
		return com(x);   //利用递归再次调用自己 ,将参数1传入 ,传入之后,因为x--,所以x变为0 
	}
	else{
     //x为0走这一分支 
		return x;   //因此,函数最终返回了0,即打印了0 
	}
}
int main(){
   
   cout<<com(2);  //1.将实参2传给形参
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值