请问这算是递归函数码?

2022-06-10 17:41:00 +08:00
 whereFly
def aa1(n): if n == 1: return 1 else: aa2(n)

def aa2(n): m = n-1 aa1(m)

2712 次点击
所在节点    Python
14 条回复
ws52001
2022-06-10 17:50:16 +08:00
算的,递归函数的定义就是直接或者间接调用函数本身。你这个算是间接调用。
Jooooooooo
2022-06-10 17:53:08 +08:00
算, 你把 aa2 展开放到 aa1 里就更直观了.
ychost
2022-06-10 17:53:45 +08:00
这是循环依赖,不过也算递归
LLaMA2
2022-06-10 18:40:06 +08:00
```
function aa1(n: number) {
while (n === 1) {
return 1;
}
aa1(n - 1);
}
```

你写的不就是这个
breeza
2022-06-10 18:52:15 +08:00
这个叫互递归
hello2090
2022-06-10 19:11:38 +08:00
你这不就 aa1(n - 1)么
whereFly
2022-06-10 21:02:08 +08:00
@ws52001 递归函数+time.sleep 间隔一段时间循环执行会遇到栈溢出,无解了吗?
IMXT
2022-06-10 23:03:09 +08:00
尾递归就不会爆栈了,前提是编译器实现了尾递归优化
necomancer
2022-06-10 23:04:12 +08:00
是不是少了 return ?(在 else 和 aa2 里)
dingwen07
2022-06-11 04:38:28 +08:00
@whereFly #7
Python 无解吧,不会对 tail recursion 优化
几乎所有递归都可以改循环
xiayushengfan
2022-06-11 09:29:08 +08:00
禁止套娃
anshigm
2022-06-11 13:55:43 +08:00
逻辑上不就是这样?
while (n !=1 )
n -=1
return 1
一个简单的循环能搞定为什么要用这么复杂的递归?这么写有什么深意吗?
whereFly
2022-06-11 14:58:58 +08:00
@anshigm 只是举例,实际是用了递归函数+time.sleep 来间隔一定时间执行程序,然后就遇到了栈溢出。
aijam
2022-06-11 15:39:25 +08:00
mutual recursion

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/858772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX