首页 > 编程知识 正文

递归python怎么返回,递归中的return作用

时间:2023-05-05 11:13:01 阅读:10175 作者:1320

今天看了二叉树,遇到了递归,结果半天也想不起来递归是什么。 (我平时很少使用递归。 )既然用了,我想总结一下。

我参考了有回复的递归有回复的递归网上的伟人的博客。

有这样一个程序:

#includestdio.hintcheng(inta ) if ) a1 ) a=a*cheng ) a-1 ); printf(%d(n ),a ); }返回a; (} int main ) ) { int b=5,c; c=城(b; printf('%d ',c ); }

您可以看到它实现了疲劳5x4x3x2x1,但计算机就是这样运行的。

1*2 2*3 6*424*5不是从5*4开始的

让我们来看看递归函数:

intcheng(inta ) if ) a1 ) a=a* cheng (a-1 ); printf(%d(n ),a ); }返回a; }从输出中可以看出,疲劳的乘法是1(a-1=1)。 此时,a从2 )开始。 1不能满足if的判断,直接返回。 请注意这里不是return结束,而是回到楼上,楼上是不是2 )。 此时,a为3。 但是,2满足了if的判断,是吗?

a=2*城(2;

此时,a不是2吗

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

a=3*2

就这样一层一层地上楼。

一言以蔽之:

请特别注意带有return的递归。 从最内层一层一层地出去。

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

最内层原本恢复1,是因为我强制恢复10,所以变成2x10;

返回应该返回20,但强制只能返回10,因此为3x10;

这一部分参考了那个大人物的博客:

3359 blog.csdn.net/it 8343/article/details/80180448

让我们来看看没有返回的递归:

没有返回返回值的递归#include'stdio.h'voidfun(intx ) x; printf(%d(n ),x ); if(x==10 ) {返回; //其中,return并不是返回任何数字,而是创建一个结束符,然后退出程序。 否则(fun(x ); }int main () fun ) ) 0; 返回0; }看看执行结果:

这里不是最内层的层回到了上层。 在简单的函数中调用函数。 如果在调用后再添加一句话呢?

#include 'stdio.h'int i=0; voidfun(intx ) x; printf(%d(n ),x ); if(x==10 ) {返回; //其中,return并不是返回任何数字,而是创建一个结束符,然后退出程序。 否则(fun(x ); printf(I=%d(n ),I ); }int main () fun ) ) 0; 返回0; }

这需要注意函数的完整性问题!

结束

因为语言表达有限,所以说不好,请谅解。 如果有错误的话,谢谢您的指出。

thanks!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。