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

本文详细探讨了递归算法的概念,强调设置退出条件防止无限递归。通过代码演练展示了如何利用递归解决会变魔术的数字、求和问题、阶乘计算以及斐波那契数列等经典问题。递归实战部分解释了每个递归过程的逻辑,并以故事背景和图形解说加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.递归的理解

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

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

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

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

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

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

二.代码演练

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

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传给形参x 
   return 0;
}

输出样例:0

2.改值操作

①调用com函数。

②在com函数中,当x=1或2或3或4,参数传入,都只要返回x即可,所以1、2、3、4没有变化。到5的时候,先递归一下,5就会乘以10,变成50之后,再传入,进行返回50。后面,从6开始,一个一个返回即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值