c语⾔⾥迭代函数怎么写,C语⾔,迭代与递归
概念
迭代(iteration)是重复反馈过程的活动,其⽬的通常是为了逼近所需⽬标或结果。每⼀次对过程的重复称为⼀次“迭代”,⽽每⼀次迭代得到的结果会作为下⼀次迭代的初始值。
递归( recursion)是程序调⽤⾃⾝的编程技巧。
*迭代跟递归本质都是⼀种⽅法。⽽递归函数顾名思义,这个函数运⽤了递归这个⽅法。
个⼈理解
迭代:通过循环不断重复⼀个过程,这个过程是⼀个或若⼲个旧值通过该过程获得⼀个或若⼲个新值的过程,⽽得到的新值⼜充当下⼀个相同过程的旧值,直到循环得到⾃⼰期望的结果。循环执⾏⼀次过程就是⼀次迭代。**迭代不是循环,迭代需要⽤到循环。
它的特点是,⼀个过程结束后再次进⾏该过程。
它的思路是,从前往后推理。
打个⽐⽅,⽂件夹A⾥有⼀个⽂件夹B,⽂件夹B中有⼀个⽂件夹C,⽂件夹C中有⼀个⽂件夹D。想要得到⽂件夹D,我们的⽅法是打开⽂件夹A得到⽂件夹B,打开⽂件夹B得到⽂件夹C,打开⽂件夹C得到⽂件夹D。
//过程是 ⽂件夹 = ⽂件夹 + 打开⽂件夹
⽂件夹B = ⽂件夹A + 打开⽂件夹
⽂件夹C = ⽂件夹B + 打开⽂件夹
⽂件夹D = ⽂件夹C+ 打开⽂件夹
所谓从前往后推理,就是通过A到B,通过B到C,通过C到D。
等号右⾯的⽂件夹指的是需要打开的⽂件夹(旧值),等号左⾯的⽂件夹指的是通过打开旧⽂件夹操作得到的⽂件夹(新值)。打开旧⽂件夹得到新⽂件夹就是⼀次迭代过程。
个⼈理解
递归:执⾏⼀个过程中需要再次调⽤该过程。
它的特点是,⼀个过程运算中再次⽤到该过程。*
他的思路是,从后往前推理。
还是以上⼀个⽐⽅为例。
//过程是 ⽂件夹 = ⽂件夹 + 打开⽂件夹
⽂件夹D = (⽂件夹C = (⽂件夹B = ⽂件夹A + 打开⽂件夹) + 打开⽂件夹) + 打开⽂件夹
所谓从后往前推理,想要到D就要到C,⽽想要到C就要到B,⽽想要到B就要到A。
迭代与递归
1.递归中⼀定有迭代,迭代中不⼀定有递归。(记住,感兴趣可取⼀些递归,迭代试⼀下)
2.能⽤迭代就别⽤递归。递归容易造成溢出。
为什么?
还是以上个⽐⽅为例,迭代执⾏到最后⼀步就只需计算
⽂件夹D = ⽂件夹C+ 打开⽂件夹
⽽递归执⾏到最后⼀步
⽂件夹D = (⽂件夹C = (⽂件夹B = ⽂件夹A + 打开⽂件夹) + 打开⽂件夹) + 打开⽂件夹
迭代和递归的次数越多,我们会发现迭代依然只需要⼀个简单的式⼦,⽽递归式⼦会越来越长。
递归函数c语言规则在纸上写下这两个式⼦,是不是发现递归式⼦占⽤的地⽅⼤?在计算机中内存也是同样的道理。
溢出,这⾥简单来说就是,内存就这么⼤⼩,递归次数越多,式⼦越长,占⽤的内存越多。当式⼦长到内存放不下了,就溢出了。
为什么还要⽤递归:采⽤递归编写程序能使程序变得简洁和清晰。现代程序要求⾼可读性与低资源占⽤,递归完全违反了这两点,所以⼀般运⽤在不太占⽤资源且很普遍运⽤的地⽅。
※借鉴⽹上资料与⾃⼰总结,如有错误或建议,望提出,我会加以修改或补充,感谢。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论