什么是递归
发布日期:2021-05-14 15:18:05 浏览次数:20 分类:精选文章

本文共 981 字,大约阅读时间需要 3 分钟。

递 归 可 以 是 循 环 递归可以是循环

能用循环做的,就能用递归做,在算法比赛中,一般只写递归,不写循环

循环 for (起始条件;循环终止条件;循环条件变化 ) === 》

递归:递归起始条件: func_recursive(n); ;有使递归趋于结束的语句:func_recursive(++n) ; 递归终止条件 n == 9

#include 
#include
#include
// 直接或是或是间接调用自己的情形,就递归调用。recursive// 递归,是比较接近自然语言特性的一种调用方式。递归必须要用合理的出口,不然会挂掉//循环 === 》 递归:递归起始条件:func_recursive(n) 有使递归趋于结束的语句:func_recursive(++n) 递归终止条件 n == 9int func_recursive(int n){ if(n == 9) { printf("%d \n",n) ; return 0; } else { printf("%d \n",n) ; return func_recursive(++n); }}int main(){ // for循环 for (int i =0;i<10;i++) { printf("%d \n",i) ; } printf("**********一样一样的*****************\n"); // 迭代 int n = 0; int ret = func_recursive(n); return 0;}

在这里插入图片描述


递归和循环,有共同的特点,有起点,有终点,重复作同样的事情。

所以很多情况,两者是可以相互转换的。

如果上升一下理论高度,作一个重复面有明确起点和终点的事,有递归和迭代两种选择。

循环其实就是一种迭代。

递归的方式,写法比较简洁,符合正常逻辑,但代码理解难度大,内存消耗大(易导致栈溢出)

所以能用迭代(lterative)解决的问题,不要用递归来完成。


上一篇:为什么要在全局变量上加上static修饰符
下一篇:高启(1336-1373)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年05月05日 03时48分33秒