嵌套的if-else循环错误-ocaml

嵌套的if-else循环错误-ocaml,ocaml,Ocaml,我试图为我的代码设计一个多if-else循环 我以前的代码是: let rec appendtolist n list b = let f x = if ( b == 0 ) then x else (append (appendtocode n (List.hd list)) (appendtolist n (List.tl list) (b-1))) in f list ;; 使用嵌套循环修改代码: let rec

我试图为我的代码设计一个多if-else循环

我以前的代码是:

let rec appendtolist n list b  =
    let f x =
        if ( b == 0 ) then x
        else (append (appendtocode n (List.hd list)) (appendtolist n (List.tl list) (b-1)))
    in
        f list
    ;;
使用嵌套循环修改代码:

let rec appendtolist n list b =
    let f x =
         if b < 0 then x
         else if (b == 0) then appendtocode n (List.hd list) (b-1)
         else appendtocode n (List.hd list) :: appendtolist n (List.tl list) (b-1)
    in
        f list
    ;;
我的代码在语法上似乎是正确的。这是在OCaml中实现嵌套循环的正确方法吗?? 我举了一个if elseif loop在线发现的例子,它运行良好

我需要最后输出
x
,这是在该函数中对
appendtocode
appendtolist
进行所有递归调用后形成的列表

我哪里做错了

请导游


谢谢。

在您的第一个代码示例中,您调用的是
appendtocode
,如下所示:

appendtocode n (List.hd list)
appendtocode n (List.hd list) (b-1)
所以我假设
appendtocode
是一个包含两个参数的函数

在第二秒钟,你这样称呼它:

appendtocode n (List.hd list)
appendtocode n (List.hd list) (b-1)
这里你用3个参数来调用它。因为它只需要两个参数,所以会收到一条错误消息,告诉您调用它的参数太多


注:If语句不是循环。

在您的第一个代码示例中,您调用的是
appendtocode
,如下所示:

appendtocode n (List.hd list)
appendtocode n (List.hd list) (b-1)
所以我假设
appendtocode
是一个包含两个参数的函数

在第二秒钟,你这样称呼它:

appendtocode n (List.hd list)
appendtocode n (List.hd list) (b-1)
这里你用3个参数来调用它。因为它只需要两个参数,所以会收到一条错误消息,告诉您调用它的参数太多


PS:If语句不是循环。

hi。谢谢没有意识到语法错误。我在一篇新文章中转述了整个问题。而不是在这里覆盖它。再次谢谢。嗨。谢谢没有意识到语法错误。我在一篇新文章中转述了整个问题。而不是在这里覆盖它。再次感谢。