【问题标题】:How to keep value constant in recursive function?如何在递归函数中保持值不变?
【发布时间】:2021-12-13 02:30:07
【问题描述】:

例子:

def func(n):
    if n > 10:
        return
    CONSTANT = n
    print(n + CONSTANT)
    func(n + 1)

>>> func(1)
2
3
4
5
6
7
8
9
10
11

>>> func(7)
14
15
16
17

显然,这个特定的任务可以通过不同的途径来完成,但我想知道这是否可行:在递归函数中有一个常数值,用一个变化的变量来表示。

【问题讨论】:

  • 我不明白这个问题。什么值应该是常数?
  • @Barmar 名为 CONSTANT 的那个。我的目标是在第一次调用函数时定义它(定义为 CONSTANT = n),并在所有即将到来的迭代中保持该值,如输出所示。

标签: python function recursion constants


【解决方案1】:

为什么不将作为参数传递的值设为全局变量并从函数中访问它?

【讨论】:

  • 难道我不需要为我想要调用函数的所有不同值创建一个全局变量吗?我认为这不是我想要的。
【解决方案2】:

将其设为仅在递归调用中传递的可选参数。

def func(n, CONSTANT = None):
    if n > 10:
        return
    if CONSTANT is None:
        CONSTANT = n
    print(n + CONSTANT)
    func(n + 1, CONSTANT)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    相关资源
    最近更新 更多