对递归感到困惑以及如何进行返回打印

时间:2016-04-24 16:31:55

标签: python-2.7 recursion

这是我开始做的功课。但正如我之前在本网站上读到的那样,人们会先告诉你先尝试一下。我现在试图理解递归,但我还没有得到它。我在想是否有人可以帮我解决这个问题,这样我就可以掌握整个概念,然后解决其余的功课。

因此,这个想法是用户输入金字塔中有多少层罐头。有了这些信息,该程序应该能够计算整个金字塔中有多少罐。图层为1 - 4 - 9 - 16,依此类推。

正如我之前所说,我不希望别人给我写代码,我真的想了解递归。

def cans(layers):
    if layers == 0:
       return 1
    else:
       return layers * cans(layers-1)

layers = raw_input("How many layers are there?: ")
print cans

1 个答案:

答案 0 :(得分:0)

你在这里错过了递归的重点。对于每一层,计算都很简单 - 它只是图层数的平方。但是,要计算整个金字塔中的罐数,可以使用递归。

这是一种思考方式:

  • N层金字塔中有多少罐? N 2 加上N-1层金字塔中的罐数。
  • 那么N-1层金字塔中有多少罐? (N-1) 2 加上N-2层金字塔中的罐数。
  • 那么N-2层金字塔中有多少罐? (N-2) 2 加上N-3层金字塔中的罐数。
  • 等等......直到你达到最终状态,这可能是一个空金字塔(一个0层的金字塔)。

如果我们在python中表达相同的逻辑:

def cans(layers):
    if layers == 0:
       return 0
    else:
       return layers**2 + cans(layers-1)