我想获得与函数结果相同的结果(使用下面的代码中的打印功能)。如果在循环中使用return语句,则循环会中断,并且我永远也不会到达索引>0。如何将中间结果存储在(局部)变量中并最终作为函数结果返回?
l = list("ABCD")
def remel(l, pos):
res = l[:]
del res[pos]
return(res)
def f(l):
if len(l) == 1:
res = l
return(res)
else:
for i in range(len(l)):
res = [l[i]] + f(remel(l, i))
print(res) # store this and pass on how?
return(res)
f(l)
问题来源:stackoverflow
您可以使用Tail递归访问中间递归结果。从在讨论给出的例子,假设您正在计算总和第一个``ň数字:
function tailrecsum(x, running_total = 0) {
if (x === 0) {
return running_total;
} else {
return tailrecsum(x - 1, running_total + x);
}
}
此处,将running_total传递给每个调用,因此您可以通过访问此变量来访问中间递归调用:
tailrecsum(5, 0)
tailrecsum(4, 5)
tailrecsum(3, 9)
tailrecsum(2, 12)
tailrecsum(1, 14)
tailrecsum(0, 15)
# Returns 15
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。