gpt4 book ai didi

haskell - 如何用递归判断一个数是否是平方数?

转载 作者:行者123 更新时间:2023-12-02 02:06:55 25 4
gpt4 key购买 nike

我解决了以下练习,但我不喜欢该解决方案:

Write the function isPerfectSquare using recursion, to tell if an Int is a perfectSquare isPerfectSquare 1 -> Should return True
isPerfectSquare 3 -> Should return False

num+1 部分适用于 isPerfectSquare 0 和 isPerfectSquare 1 的情况,这是我一点也不喜欢的部分之一,这是我的解决方案:

perfectSquare 0 1 = [0] ++ perfectSquare 1 3
perfectSquare current diff = [current] ++ perfectSquare (current + diff) (diff + 2)

isPerfectSquare num = any (==num) (take (num+1) (perfectSquare 0 1))

这个问题有什么更优雅的解决方案吗?当然我们不能使用 sqrt,也不能使用浮点运算。

最佳答案

@luqui 你的意思是这样吗?

pow n = n*n
perfectSquare pRoot pSquare | pow(pRoot) == pSquare = True
| pow(pRoot)>pSquare = perfectSquare (pRoot-1) pSquare
| otherwise = False
--
isPerfectSquare number = perfectSquare number number

我不敢相信我没有看到它,非常感谢!我一定很累了

关于haskell - 如何用递归判断一个数是否是平方数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com