小编Dav*_*unn的帖子

使用递归而不是循环将C代码转换为haskell代码(无列表)

我想将以下c代码转换为haskell代码,而不使用列表。它返回两个数字出现的次数对于给定的n,其中n满足n=(a*a)*(b*b*b)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(void) {

int n = 46656;
int i,j,counter=0,res=1;


int tr = sqrt(n);


for(i=1; i<=tr; i++) {
    for(j=1; j<=tr; j++) {

                res = (i*i) * (j*j*j) ;
                if(res==n) {
            counter=counter+1;
        }
        printf("%d\n",res);
    }

}

printf("%d\n",counter);
}
Run Code Online (Sandbox Code Playgroud)

在循环方面,我设法在haskell中做了类似的事情,但仅是为了找到总和。我发现也很难在haskell中实现if部分和反部分(请参见c代码)。任何帮助,不胜感激!这也是我的haskell代码:

sumF :: (Int->Int)->Int->Int
sumF f 0 = 0
sumF f n = sumF f (n-1) + f n



sumF1n1n :: (Int->Int->Int)->Int->Int
sumF1n1n f 0 = 0
sumF1n1n f n = sumF1n1n f (n-1) …
Run Code Online (Sandbox Code Playgroud)

recursion counter haskell loops nested

-1
推荐指数
1
解决办法
121
查看次数

标签 统计

counter ×1

haskell ×1

loops ×1

nested ×1

recursion ×1