在Python中以递归方式向函数传递值

2024-05-23 21:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图将值从递归助手函数传递给父函数,但它正在传递None。我正在学习Python和递归,并试图理解值是如何在函数之间传递的。你知道吗

def superDigitSum(n,k):
    num2str = [int(i) for i in list(str(n))*k] #creates the list[1,4,8,1,4,8,1,4,8]
    result=0
    return superDigitSumHelper(num2str, result)

def superDigitSumHelper(num2str, helper_result):
    if not num2str :
        return helper_result
    else:
        helper_result+=num2str[-1]
        superDigitSumHelper(num2str[:-1],helper_result)

print(superDigitSum(148,3))

代码创建列表[1,4,8,1,4,8,1,4,8]并对值求和。我期望结果是39(3*(1+4+8))。你知道吗


Tags: 函数inhelpernoneforreturndef助手
3条回答

你的功能有点错误。你知道吗

您需要向superDigitSumHelper函数添加以下返回:

return superDigitSumHelper(num2str[:-1], helper_result)

在你的生活中。你知道吗

本质上,它返回none是因为函数结束后,它不返回任何内容,所以默认值是none。你知道吗

这个子句返回None到堆栈的下一个调用。您需要返回最后一个值:

else:
    helper_result+=num2str[-1]
    superDigitSumHelper(num2str[:-1],helper_result)

相反

else:
    helper_result+=num2str[-1]
    return superDigitSumHelper(num2str[:-1],helper_result)

试试看

else:
    helper_result+=num2str[-1]
    return superDigitSumHelper(num2str[:-1],helper_result)

如果不返回递归调用的结果,就等于不返回任何结果

相关问题 更多 >