我要为一门课做一个练习,尤其是这门课对我不太管用。这个问题很简单,我有一个解决办法,但我不知道我是否被允许有多个功能,或如果我注定只有一个。我更喜欢只使用一个函数。你知道吗
我必须写一个简单的函数,以n层作为参数,并计算它总共有多少升汤(它必须是一个递归函数)。层是罐头的字面层,工作方式如下:顶层有1^2个罐头,第二层有2^2个,第三层有3^2个,依此类推。你知道吗
此函数可成功计算n层中的罐数:
def lager(n):
if n<1:
return 0
else:
return n**2+lager(n-1)
例如,函数返回n=2的示例5,以此类推。 一个罐子里有0.407150407905升汤,所以我应该把这个函数的结果乘以它,对吗?所以我想为什么我不能用同样的函数呢?我试着编辑最后一行:
return (n**2+lager(n-1))*0.407150407905
但出于某种原因(我不明白),它不适用于层数大于1的情况。你知道吗
因为我没有让它工作,我只是让上面的函数保持原样,并制作了一个新的函数,它接受返回值并将其与0.407150707905相乘,然后打印结果。但正如我所说的,我不确定是否允许我写函数。有人能告诉我为什么我的理论行不通吗?你知道吗
每行
n
有n**2
罐,每罐容积0.407150407905
升。但是,当前函数将volume
乘法器应用于以下两个方面:这意味着乘法器被反复应用到一些罐子上,有效地减少了它们在每一层上的体积。在这里我建议两种选择之一:
因此:
或:
您的方法不起作用,因为在递归计算中,因子
0.407...
用在了错误的位置。使用两个步骤的方法更清晰:首先计算罐的数量,然后将罐的数量乘以罐的容量。你知道吗相关问题 更多 >
编程相关推荐