说一说递归里的return返回!!!
今天看二叉树时候遇到递归,结果半天没想起来递归是啥(实在是平时几乎没有用到递归),想了想既然用到了就总结一下吧!
有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返回!!!相关推荐
- 递归中的return用法,逐级返回
递归中的return用法,逐级返回 不明白以下程序段的输出为何是 #include<stdio.h> int my_pow(int n,int k) {printf("level ...
- c++ return返回值与内存
在学习函数的时候,发现有些函数返回一个变量,有些返回引用,有些返回指向当前对象的指针,深入挖掘,发现这牵扯到内存相关的东西 1.内存 如下图:32位X86机器的内存布局图,内存主要分为栈.堆.BSS段 ...
- SAP WM中阶之存储类型设置界面里的’Return Stock To Same Storage Bin’
SAP WM中阶之存储类型设置界面里的'Return Stock To Same Storage Bin' 在SAP WM存储类型的配置界面里,有一个选项叫做'Return Stock to Same ...
- Struts2里的Action返回Json数据
hibernateTemplate和hibernateDaoSupport的注意问题! 正则表达式入门30分钟 Struts2里的Action返回Json数据 2010-08-03 22:46:46| ...
- 07 - java 方法里面的 return
Java 方法里面的 return return 之函数返回值 public static int sum(a, b) {return a + b; } return 之结束方法 Scanner sc ...
- 0717Python总结-return返回值,全局及局部变量,函数名的使用,函数的嵌套,nonlocal修改局部变量,及locals和globals
一.return 返回值 自定义函数的返回值,return 可以把值返回到函数的调用处 (1) return + 六大标准数据类型 , 还有类和对象,函数 如果不定义return , 默认返回的是No ...
- Python ------ return返回值等
杂 return 全局变量和局部变量 函数名的使用 函数的嵌套 nonlocal return # ### return 返回值 """ 自定义函数的返回值,return ...
- [极致用户体验] 网页里的「返回」应该用 history.back 还是 push ?
我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权.我独立开发了<联机桌游合集>,是个网页,可以很方便的跟朋友联机 ...
- return返回值返回到哪里
c语言return,返回给了上一级,比如一个递归程序,从第三层返回到第二层:又比如一个普通的子程序,那就返回到主程序中去. 主程序中return返回给了操作系统. main函数调用了sum函数,sum ...
最新文章
- 韩辉:国产操作系统的最大难题在于解决“生产关系”
- Oracle中的 IN, NOT IN和 EXISTS, NOT EXISTS的區別
- 浅谈微软跨平台与MONO
- Swift3.0语言教程字符串转换为数字值
- python大全1015python大全_python 列表总结大全
- react 哲学_细聊Concent amp; Recoil , 探索react数据流的新开发模式
- wxpython使窗口重新显示_wxpython刷新窗口按按钮
- java实现调查问卷_智能办公进行时丨富士施乐邀您参与有奖问卷调查
- 计算机室 多媒体教室制度,专用教室、多媒体教室管理制度
- 手机“入殓师”,你之前有听过吗?
- Notepad++搜索结果窗找不见了
- linux下面ps命令,Linux下修改后的ps命令,很好很强大!
- Restful-API设计最佳实战--Django播客系统(五)
- win7计算机窗口像xp,windows7界面突然变成xp老版本怎么回事?win7界面突然变成老版本的解决方法...
- 自然语言处理入门(7)——基于TF-IDF的文本自动打标
- CICS事务网关-CTG原理及操作
- mysql 连接配置
- HTTP Status 400 (HTTP400状态码)
- Revit幕墙:用幕墙巧做屋面瓦及如何快速幕墙?
- 视频教程-从零开始开发3D跑酷游戏教程-Unity3D