gpt4 book ai didi

ruby - 此 ruby​​ 代码算作递归函数吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:41 25 4
gpt4 key购买 nike

我正在阅读有关递归的内容。其中一个练习是编写一个递归函数来对数组中的数字求和。我不应该使用 Array#sum 来执行此操作。我写这个是为了模仿递归:

def recursive_sum(list)
if list == []
return 0
else
return list.shift + recursive_sum(list)
end
end

recursive_sum [1,2,3,4]
# => 10

“递归函数/方法调用自身。”这很清楚,似乎这个函数确实调用了自己。但是我不确定这是否算作递归函数,因为我在其中使用了 shift 方法。

最佳答案

是的,正是出于您已经提到的原因,我将其称为递归函数:“递归函数/方法调用自身。”

方法调用 shift 没有坏处。事实上,它也会调用其他方法 - 如 if==+

您不能调用任何其他方法,只能调用该方法本身,否则该方法将无法执行任何有用的操作。

def foo
foo
end

调用该递归方法会引发 SystemStackError(堆栈级别太深)

关于ruby - 此 ruby​​ 代码算作递归函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com