返回语句不强制跳出函数

时间:2019-07-02 10:54:48

标签: python

我正在写一个递归函数来打印给定数字范围内第一个出现的数字的平方根数,例如,在80-90范围之间,第一个数字是具有完美平方根的第一个数字是9.另外9具有3的理想平方根,但3没有理想的等根。因此计数应为2:81:9-> 3. count = 2

import math

def sqrtCount(num, countVal):
    count = countVal
    root = math.sqrt(num)
    if int(root + 0.5) ** 2 != num:
        return count
    else:
        count += 1
        sqrtCount(root, count)
        return count


min = int(input("Enter Minimum number: "))
max = int(input("Enter Maximum number: "))

for i in range(min, max + 1):
    val = sqrtCount
    if val(i, 0) > 0:
        print(val(i, 0))
        break

1 个答案:

答案 0 :(得分:1)

首先,您的代码很难阅读。

val = sqrtCount

在这里没有很好的用途。在我看来,您想要

for i in range(min, max + 1):
    val = sqrtCount(i, 0)
    if val > 0:
        print(val)
        break

也是

count = countVal

似乎没有帮助。删除它会简化方法并帮助您自己理解它。最后,它就像

def sqrtCount(num, countVal):
    root = math.sqrt(num)
    if int(root + 0.5) ** 2 != num:
        return countVal
    else:
        return sqrtCount(root, countVal +1)