gpt4 book ai didi

functional-programming - 陷入一个函数的无限循环

转载 作者:行者123 更新时间:2023-12-04 17:37:52 24 4
gpt4 key购买 nike

我在这个函数中陷入了无限循环:

let rec showGoatDoorSupport(userChoice, otherGuess, aGame) =                                       
if( (userChoice != otherGuess) && (List.nth aGame otherGuess == "goat") ) then otherGuess
else showGoatDoorSupport(userChoice, (Random.int 3), aGame);;

这是我调用函数的方式:
showGoatDoorSupport(1, 2, ["goat"; "goat"; "car"]);             

在函数的第一个条件中,如果不同,我比较前 2 个输入参数(1 和 2),并且如果索引“otherGuess”的列表中的项目不等于“goat”,我想返回那个别人猜。

否则,我想使用 0-2 之间的随机数作为第二个输入参数再次运行该函数。

关键是继续尝试运行该函数,直到第二个参数不等于第一个参数,并且列表中的插槽不是“山羊”,然后返回该插槽编号。

最佳答案

不要使用 == ,它检查物理相等性。使用 = .两个不同的字符串在物理上永远不会相等,即使它们包含相同的字符序列。 (这是必要的,因为字符串在 OCaml 中是可变的。)

$ ocaml
OCaml version 4.00.0

# "abc" == "abc";;
- : bool = false
# "abc" = "abc";;
- : bool = true

关于functional-programming - 陷入一个函数的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631427/

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