如何写递归函数

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一、递归的意思是函数自己调用自身(直接方式),或者在自己函数调用的下级函数中又调用自己(间接方式)。

       递归可拆分为递和归两个过程,递就是向下层传递参数,归是指当函数不再向下传递时会一层一层的返回。

二、写递归函数需考虑的要素:

       a.怎样取一个变量或多个往下递归(不是绝对,但是推荐这么做,变量在传递中要有变化)。

       b.怎样终止递归,要设置一个合理的终止条件(原来的规律不能成立,函数体递归前的代码不再能重复)。

       c.递归过程中的暂时或中间结果怎样保存(不是每一个递归都需考虑这个情况)。

       注:递归函数没有限制函数体里可以调用多少次自身,但是物理硬件决定了它还是会有一个极限,尽量不要超过26万次(UNIX)。

例:

#include <stdio.h>

int sum(int n,int tmp)
{  //递-----------------------
   if(1>n)//!!! 1.这是考虑到递归函数的终止条件
   {
      printf("\n"); 
      return tmp;
   }
   tmp+=n;//!!! 3.累加的中间结果传递的作用。
   int m=n; 
   printf("+%d",n);
   int ret=sum(--n,tmp);//!!! 2.递归的过程应该伴随至少一个参数的变动
   //归-----------------------
   printf("+%d ",m);//同样的语句放的位置不同,输出时的顺序会有变化
   printf("sum(%d,%d)返回...\n",n,tmp);
   return ret;
}

int main()
{
   int n=10;
   printf("累加结果:%d\n",sum(n,0));
}


三、递归思维(怎样用递归解决复杂的有规律可寻的这样的一些问题):

       A.找到一个解决有规律问题方案的一个典型环节(层面), 只考虑这一个环节(层面)的代码应该如何实现.

       B.在这个环节(层面)里又只需考虑:

              a.参数变量如何设置,如何变化传递。

              b.终止条件语句如何写, 也就是不再遵守典型规律的那些情况如何变成代码上的终止条件。

              c.仔细调整一下需输出的文字信息(放在递在过程和归的过程的情况,不要出现重复打印的情况)。

结论: 递归思维本质特点是暂时忽略各个层次实现的不同细节,而只需关注固定的某一环节的较大的过程实现即可.(有规律性的,例外情况不会太多的问题,适合用递归来实现)。
函数递归的书技巧 目录 一、函数递归的定义和条件 1.递归的定义 2.递归的两个必要条件 二、基本思想 三、实例讲解 1.汉诺塔问题 (1)问题描述 (3)代码书 2.青蛙跳台阶问题 (1)问题描述 (2)思路分析 (3)代码书 三、总结 一、函数递归的定义和条件 1.递归的定义 程序调用自身的编程技巧称为递归( recursion)。表示一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,只需少量的 阅读详情

相关推荐

如何递归

1. 递归的定义 编程语言中,函数 Func(Type a,……)直接或间接调用函数本身,则该函数称为「递归函数」。在实现递归函数之前,有两件重要的事情需要弄清楚:递推关系:一个问题的结果与其子问题的结果之间的关系。 基本情况:不需要进一步的递归调用就可以直接计算答案的情况。可理解为递归跳出条件。 一旦我们计算出以上两个元素,再想要实现一个递归函数,就只需要根据递推关系调用函数本身,直到其抵达基本情况。1.1 递推关系 下面的插图给出了一个 5 行的帕斯卡三角,根据上面的定义,我们生成一个具有确定行数的帕斯

熊與貓v 5176

递归函数的编方法

递归函数的编步骤 1.找到并设置迭代单体 2.设置结束条件 3.编程实现 递归函数简单来说是一种自身调用自身的函数。递归函数可用于需要重复操作的程序,如绘制分形树,下面将以分形树绘制作为递归函数的实例,解释递归函数的编方法。 1.找到并设置迭代单体 在绘制分形树的过程中,若能先完成分形树中元素的绘制,则可通过迭代操作完成整个分形树的绘制,每一步迭代所进行的操作在此定义为“迭代单体”。每次迭代操...

weixin_43157453的博客 4164

[C语言学习]----函数递归(超详细!!!)

详细讲解函数递归

m0_68468727的博客 1万+

【Python函数的递归】

递归的定义 函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。就像一个人站在装满镜子的房间中,看到的影像就是递归的结果。递归在数学和计算机应用上非常强大,能够非常简洁的解决重要问题。 以求阶乘为例 #计算阶乘:根据用户输入的整数n,计算并输出n的阶乘值。 def fact(n):#计算阶乘 if n == 0: return 1 else: return n * fact(n-1)

W_chuanqi的博客 5万+

浅谈如何递归函数

浅谈如何递归函数 过一些递归函数,发现一些规律,分享一下吧,欢迎大神指教 编递归函数总结 1.明确递归函数的参数列表,确定数据的存储方式 2.确定递归函数的结束条件,以及应该采取的方法,这些条件一般都放在函数的开头处,用于判断是否结束递归,很重要 3.找到递归的循环体,就是将那些会反复执行的语句找出来, 4.将循环体在递归结束条件后面 5.over 下面就以一些

ylqhust的专栏 1012

关于C++使用lambda表达式递归函数时的踩坑记录

引用捕获的方案通过类型擦除和延迟绑定,使得 Lambda 能间接调用自身,解决了递归问题。该方法的代价是性能开销,但在旧版 C++ 标准(C++11/14)中是常用方案若使用 C++17 或更高版本,优先选择显式对象参数语法,兼顾效率与简洁性。

m0_74795952的博客 1117

python 递归 平方_Python递归函数如何?正确的Python递归函数用法

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。如果你还对递归还不懂或者python学的不是很好,建议去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,进步...

weixin_39826089的博客 934

一个递归函数

递归函数是一种特殊的函数,它在执行时会调用自身。一个递归函数必须包含两个部分:一个递归条件和一个递归的主体。 举个例子,以求阶乘为例: def factorial(n): if n == 1: return 1 else: return n * factorial(n - 1) 在这个例子中,递归条件是 n == 1,递归主体是 return n ...

weixin_35755640的博客 224

Python 递归函数怎么

Python 递归函数可以使用 def 关键字定义。递归函数需要满足两个条件:基本情况和递归情况。 基本情况是指递归函数可以直接返回结果,而不需要进一步的递归调用。递归情况是指递归函数需要调用自身来解决更小规模的子问题。 以下是一个简单的递归函数示例,用于计算阶乘: def factorial(n): if n == 1: return 1 else: ...

weixin_42596011的博客 975

递归函数的一些思考

定义递归的基本情况:确定递归函数应该在何时终止,即递归的基本情况。这是一个递归的出口条件,确保递归不会无限进行下去。基本情况应该是可以直接求解或返回的简单情况。确定递归的问题规模:考虑如何将原问题分解为规模更小的子问题。递归函数应该在每一次递归调用时减小问题的规模,使得递归最终会达到基本情况。利用递归调用解决子问题:在递归函数中调用自身来解决子问题。递归调用应当是朝着基本情况逼近的方向进行的,以确保问题规模不断缩小。整合子问题的结果:在递归函数中,将子问题的解合并为原问题的解。

不会近视的小何的博客 205

Python一个递归函数

好的,下面是一个用 Python 实现递归函数的示例: deffactorial(n): if n == 1: return 1 else: return n * factorial(n-1) print(factorial(5)) # 120 这个递归函数计算阶乘,如果参数 n 为 1,则返回 1,否则返回 n 乘以 factorial(n-1...

weixin_42581003的博客 201

python编递归函数_Python递归函数如何?正确的Python递归函数用法!

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。一、举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出:fact(n) = n! = 1 x 2 x 3 x … x (n-1) x n = (n-1)! x n = fact(n-1) x n所以,fact(n)可以表示为n x fact(n-1),只有n=1...

weixin_39658966的博客 538

用js递归函数

一:什么是递归: 递归函数有n个参数,就定义一个n维的数组,数组的下标是递归函数参数的取值范围i,数组元素的值就是递归函数的返回值,这样就可以从边界值开始,逐步填充数组,用已知推未知,相当于计算递归函数值的逆过程。 二:将原问题分解为子问题 把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决(数字三角形为例)。 子问...

x1037490413的博客 484

python编递归函数_Python递归函数如何?正确的Python递归函数用法

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。如果你还对递归还不懂或者python学的不是很好,建议去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,进步...

weixin_39883129的博客 413

python中的递归函数如何表示_Python递归函数如何?正确的Python递归函数用法!...

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。一、举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出:fact(n) = n! = 1 x 2 x 3 x … x (n-1) x n = (n-1)! x n = fact(n-1) x n所以,fact(n)可以表示为n x fact(n-1),只有n=1...

weixin_39528697的博客 205
上一篇: 七、函数(基本概念)
下一篇: Qt将ttf文件设置为默认字体
Vegata
博客等级 码龄16年 19粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值