我正在尝试将以下代码传递给haskell,但它让我错误在haskell中错误地终止了字符常量。 python中的代码已经过测试,并且是correc
import System.IO
funcion x n = funcionaux x n 1
funcionaux x n k = if(k>n) then 2*k-1 else (2*k-1)-((x**k)´div´(funcion(x,n,(k+1)))
main = do
x <- readLn :: IO Double
n <- readLn :: IO Int
putStrLn (show(funcion x n))
python代码是
def funcion(x,n,k):
if k > n:
return ((2*k)-1)
else:
return ((2*k)-1) - ((x**k)/funcion(x, n, (k+1)))
print(funcion(1.3,7,1))
答案 0 :(得分:3)
你需要在div
周围使用反引号(表示使用前缀函数的中缀),而不是单引号(表示字符常量,因此错误)。也就是说,您应该在`div`
使用'div'
。
答案 1 :(得分:1)
您正在打开4个括号并关闭3。
以下是重新格式化代码的建议。我也按原样递归funcionaux
。
您可能需要修复更多错误,这是未经测试的。
import System.IO
funcion x n = funcionaux x n 1
funcionaux x n k = if k>n
then 2*k - 1
else 2*k - 1 - ((x**k) `div` funcionaux x n (k+1))
main = do
x <- readLn :: IO Double
n <- readLn :: IO Int
putStrLn (show (funcion x n))
答案 2 :(得分:0)
嗯...... Haskell并不像python那么简单,需要深思熟虑的研究。
工作代码如下:
import System.IO
funcionaux x n k = if(k>n)
then 2*k-1
else (2*k-1)-((x^k) `div` (funcionaux x n (k+1)) )
main = do
x <- readLn :: IO Int
n <- readLn :: IO Int
putStrLn (show (funcionaux x n 1))
还有一些说明:
div
和/也用于不同的类型;