【问题标题】:create recursive power of 2 '*' in python在python中创建2'*'的递归幂
【发布时间】:2014-12-11 11:43:24
【问题描述】:

在 pyschools 中,我被 2 个递归函数的力量所困

>>> createStars(0) # 2 的 0 = 1 次方 '*' >>> createStars(1) # 2 的 1 = 2 次方 '**' >>> createStars(2) # 2 的 2 = 4 次方 '****' >>> createStars(3) # 2 的 3 = 8 次方 '********'

我想要做的如下:

def createStars(x): 如果 x == 0: 返回 '​​' 别的: 返回 '​​' * x + createStars(x-1)

但是,这似乎是“x”的总和,而不是 2 的幂。 意思是,当 x 大于 2 时,这将中断

我知道如何递归地执行 2 的幂,但不知道在哪里更改才能使 createStars() 工作。

定义功率(x,n): 如果 n == 0: 返回 1 别的: 返回 x * 幂(x,n-1)

附言。我知道使用非递归方法很容易解决它。 但想请教如何以递归方式进行操作。

谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:
    def createStars(x):
        if x == 0:
            return '*'
        else:
            return createStars(x-1) * 2
    

    (递归中的每一步都会使输出字符串中的星数加倍)。

    【讨论】:

    • 是的!谢谢,xnx。我被指示使用“+”,但完全忘记使用乘法..
    【解决方案2】:

    你很亲密!

    我建议比较您提供给我们的两段代码。 (我要稍微重命名一下,让类比更清楚):

    def createStars(n):
        if n == 0:
            return '*'
        else:
            return '*' * n + createStars(n-1) 
    
    
    def power(x, n):
        if n == 0:
            return 1
        else:
            return x * power(x, n-1)
    

    它们具有几乎完全相同的结构。特别是,每行的最后一行的结构略有不同。

    在(工作)幂中,您将n-1 的结果乘以x。因此,在计算 power(2, 6) 时,您将 power(2, 5) 增加 2。(即,您 32 乘以 2 得到 64)。

    在(不工作的)createStars 中,您不会将n-1 的结果乘以任何东西;你只是在它的开头添加东西。如果你改变它以使结构匹配怎么办?

    另外,您应该检查createStars(1) 的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2015-11-08
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多