我在haskell中很新鲜,我在Haskell中定义了一个函数:
febs :: (Integral a)=> a -> a
febs n
| n<=0 =0
| n==1 =1
| n==2 =1
| otherwise =febs(n-1)+febs(n-2)
Run Code Online (Sandbox Code Playgroud)
但是,它运行速度很慢,当我做"febs 30"时,它需要大约10秒,而且我在C++中执行相同的功能,它运行速度非常快.
int febs(int n)
{
if(n == 1 || n ==2)
{
return 1;
}
return febs(n-1)+febs(n-2);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法提升我的haskell功能速度?
我使用的是Visual C++ 2010,代码是:
#include "stdafx.h"
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[]) {
printf("step 0: %s\n", argv[0]);
int d;
scanf("%d",&d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我选择_UNICODE时,输出为"D",当我选择_MBCS时,它运行良好,输出为"D:\ VCTest\c1006.exe"
为什么在_UNICODE中出错?如何为_UNICODE和_MBCS使用相同的代码?