下面是一个使用递归函数检查一个数字是否为完全平方数的示例代码:
def isPerfectSquare(num):
if num < 0:
return False
elif num == 0 or num == 1:
return True
else:
return squareHelper(num, 1, num // 2)
def squareHelper(num, start, end):
if start > end:
return False
mid = (start + end) // 2
if mid * mid == num:
return True
elif mid * mid < num:
return squareHelper(num, mid + 1, end)
else:
return squareHelper(num, start, mid - 1)
# 测试示例
print(isPerfectSquare(16)) # 输出: True
print(isPerfectSquare(14)) # 输出: False
该函数的思路是通过二分法来判断一个数字是否为完全平方数。递归函数squareHelper
负责进行二分搜索,从start
到end
之间寻找可能的平方根。如果找到了平方根,返回True;如果找不到,返回False。初始调用函数isPerfectSquare
则负责处理边界条件和调用递归函数。
上述示例中,isPerfectSquare(16)
返回True,因为16是一个完全平方数(4的平方),而isPerfectSquare(14)
返回False,因为14不是一个完全平方数。