Python 为什么这个程序没有返回正确的答案

Python 为什么这个程序没有返回正确的答案,python,Python,解决 我写了一个python程序,我试图在其中搜索一个n, 但最后三行我尝试的是试错法,没有给出答案 任何输出 代码: #3 i = 0 def rekur(x, n): global i i += 1 #print('iteracja: ' + str(i) + '\nwartosc x = ' + str(x) + '\nwartosc y = ' + str(round(n,0))+ '\n') if i > 50: return 0

解决

我写了一个python程序,我试图在其中搜索一个n, 但最后三行我尝试的是试错法,没有给出答案 任何输出

代码:

#3
i = 0
def rekur(x, n):
    global i
    i += 1
    #print('iteracja: ' + str(i) + '\nwartosc x = ' + str(x) + '\nwartosc y = ' + str(round(n,0))+ '\n')
    if i > 50:
        return 0
    if n == 1:
        return x
    else:
        if n % 3 == 0:
            k = rekur(x, round(n/3, 0))
            return round(pow(k, 3), 0)
        else:
            return round(x*rekur(x, n-1), 0)

print(rekur(3,4))

for g in range(1000):
    if round(rekur(3, g),0) == 81:
        print(g)
81

Process finished with exit code 0
输出:

#3
i = 0
def rekur(x, n):
    global i
    i += 1
    #print('iteracja: ' + str(i) + '\nwartosc x = ' + str(x) + '\nwartosc y = ' + str(round(n,0))+ '\n')
    if i > 50:
        return 0
    if n == 1:
        return x
    else:
        if n % 3 == 0:
            k = rekur(x, round(n/3, 0))
            return round(pow(k, 3), 0)
        else:
            return round(x*rekur(x, n-1), 0)

print(rekur(3,4))

for g in range(1000):
    if round(rekur(3, g),0) == 81:
        print(g)
81

Process finished with exit code 0
这些行不提供任何输出:

for g in range(1000):
    if round(rekur(3, g),0) == 81:
        print(g)
这是为什么?我找到了原因。 发生这种情况是因为i的状态。 现在当我加上

    if i > 50:
        i = 0
        return 0

它给了我想要的答案

四舍五入(rekur(3,g),0)
根本不等于81。我建议对
if
语句之前的
round(rekur(3,g),0)
print()
结果进行评估,以查看您得到的是哪种输出。如果我不仔细研究数学,我怀疑你的问题与
if I>50:return 0有关。你的嫌疑犯是错误的。注意,我们要求一个问题的代码尽可能狭隘和明确。“为什么这一行代码有输出X?”是一个比“为什么我的程序有输出X?”好得多的问题,尽管它要求您在开始提问之前做更多的工作/调查,因为与其他人的特定代码相关的问题相比,其他人更有可能从与语言功能或设施相关的问题中学到有用的知识。(在网站刚创建时,我们对此类问题有一个明确的原因,“太本地化了”;如今,过去以这种方式结束的问题大多被认为“过于宽泛”)。