今天看二叉树时候遇到递归,结果半天没想起来递归是啥(实在是平时几乎没有用到递归),想了想既然用到了就总结一下吧!

有return的递归

有return的递归我参考了网上一个大佬的博客。
有这样一个程序:

   #include<stdio.h>int cheng(int a){if(a>1){a=a*cheng(a-1);printf("%d\n",a);}return a;}int main(){int b=5,c;c=cheng(b);printf("%d",c);}


可以看到实现累乘5x4x3x2x1,但是计算机是这样执行的。

1*2
2*3
6*4
24*5

并不是从5*4开始的
再看一下递归函数:

   int cheng(int a){if(a>1){a=a*cheng(a-1);printf("%d\n",a);}return a;}

从输出可以看出累乘是从1(a-1=1,此时a是2)开始的,1不能满足if判断,直接return,注意这里面不是return结束,而是返回给上一层,上一层是不是就是2(此时a是3)。但是2是满足if判断的所以是不是就是:

a=2*cheng(2);
此时a不就是2嘛

然后往上层,进入if判断,

a=3*2

就这样一层一层往上层走。
总结一句话:

有return的递归要特别注意,是从最内层开始一层一层往外层走的。

验证:我给上面程序return a;这句改称return 10;看一下会发生什么?

最内层原本要返回1的,我强制让他返回10,所以就是2x10;
再次返回因该返回20,但是强制只能返回10,所以是3x10;
这部分参考那个大佬的博客是:
https://blog.csdn.net/IT8343/article/details/80180448
下面我们看一下无return的递归:

无return返回值的递归

#include "stdio.h"void fun(int x)
{x++;printf("%d \n",x);if(x==10){return;//这里return不是返回没有返回任何数,只是做结束,结束程序。不然跑飞了}fun(x);
}
int main()
{fun(0);return 0;
}

看一下运行结果:

这里就不是最内层的一层层往上层返回了。就单纯的函数里面调用函数。如果我们在调用后面再加一句语句呢?

#include "stdio.h"
int i=0;
void fun(int x)
{x++;printf("%d \n",x);if(x==10){return;//这里return不是返回没有返回任何数,只是做结束,结束程序。不然跑飞了}fun(x);printf("i= %d\n",i++);
}
int main()
{fun(0);return 0;
}


这就需要注意函数的完整性问题了!
–END–

言语表达有限,讲的不好请谅解。如有错误感谢指正。
thanks!!!

说一说递归里的return返回!!!相关推荐

  1. 递归中的return用法,逐级返回

    递归中的return用法,逐级返回 不明白以下程序段的输出为何是 #include<stdio.h> int my_pow(int n,int k) {printf("level ...

  2. c++ return返回值与内存

    在学习函数的时候,发现有些函数返回一个变量,有些返回引用,有些返回指向当前对象的指针,深入挖掘,发现这牵扯到内存相关的东西 1.内存 如下图:32位X86机器的内存布局图,内存主要分为栈.堆.BSS段 ...

  3. SAP WM中阶之存储类型设置界面里的’Return Stock To Same Storage Bin’

    SAP WM中阶之存储类型设置界面里的'Return Stock To Same Storage Bin' 在SAP WM存储类型的配置界面里,有一个选项叫做'Return Stock to Same ...

  4. Struts2里的Action返回Json数据

    hibernateTemplate和hibernateDaoSupport的注意问题! 正则表达式入门30分钟 Struts2里的Action返回Json数据 2010-08-03 22:46:46| ...

  5. 07 - java 方法里面的 return

    Java 方法里面的 return return 之函数返回值 public static int sum(a, b) {return a + b; } return 之结束方法 Scanner sc ...

  6. 0717Python总结-return返回值,全局及局部变量,函数名的使用,函数的嵌套,nonlocal修改局部变量,及locals和globals

    一.return 返回值 自定义函数的返回值,return 可以把值返回到函数的调用处 (1) return + 六大标准数据类型 , 还有类和对象,函数 如果不定义return , 默认返回的是No ...

  7. Python ------ return返回值等

    杂 return 全局变量和局部变量 函数名的使用 函数的嵌套 nonlocal return # ### return 返回值 """ 自定义函数的返回值,return ...

  8. [极致用户体验] 网页里的「返回」应该用 history.back 还是 push ?

    我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权.我独立开发了<联机桌游合集>,是个网页,可以很方便的跟朋友联机 ...

  9. return返回值返回到哪里

    c语言return,返回给了上一级,比如一个递归程序,从第三层返回到第二层:又比如一个普通的子程序,那就返回到主程序中去. 主程序中return返回给了操作系统. main函数调用了sum函数,sum ...

最新文章

  1. 韩辉:国产操作系统的最大难题在于解决“生产关系”
  2. Oracle中的 IN, NOT IN和 EXISTS, NOT EXISTS的區別
  3. 浅谈微软跨平台与MONO
  4. Swift3.0语言教程字符串转换为数字值
  5. python大全1015python大全_python 列表总结大全
  6. react 哲学_细聊Concent amp; Recoil , 探索react数据流的新开发模式
  7. wxpython使窗口重新显示_wxpython刷新窗口按按钮
  8. java实现调查问卷_智能办公进行时丨富士施乐邀您参与有奖问卷调查
  9. 计算机室 多媒体教室制度,专用教室、多媒体教室管理制度
  10. 手机“入殓师”,你之前有听过吗?
  11. Notepad++搜索结果窗找不见了
  12. linux下面ps命令,Linux下修改后的ps命令,很好很强大!
  13. Restful-API设计最佳实战--Django播客系统(五)
  14. win7计算机窗口像xp,windows7界面突然变成xp老版本怎么回事?win7界面突然变成老版本的解决方法...
  15. 自然语言处理入门(7)——基于TF-IDF的文本自动打标
  16. CICS事务网关-CTG原理及操作
  17. mysql 连接配置
  18. HTTP Status 400 (HTTP400状态码)
  19. Revit幕墙:用幕墙巧做屋面瓦及如何快速幕墙?
  20. 视频教程-从零开始开发3D跑酷游戏教程-Unity3D

热门文章

  1. 推荐几个亲测好用高质量学习SQL的网站(建议收藏)
  2. vue关闭eslint代码检测
  3. dell电脑如何安装ubuntu系统_Dell Win10系统安装成Ubuntu16.04
  4. AutoDesk CAD激活后闪退解决方法
  5. 里氏代换和依赖倒转原则(二)
  6. mysql 优化总结
  7. 什么是决策树?(详解)
  8. 关于JS中的内存溢出与内存泄漏
  9. WindowManager LayoutParams 上
  10. 什么是RIA,他的优势?