gpt4 book ai didi

sml - 有没有办法在 SML 的递归函数中保持变量值?

转载 作者:行者123 更新时间:2023-12-04 05:32:41 25 4
gpt4 key购买 nike

fun temp(x) = 
let val a = x
in if a mod (x-1) = 0 then x
else temp(x-1)
end;

这是标准机器学习代码示例。

我想知道的是
例如用户调用 temp(10);然后 a = 10 并调用 temp(x-1)。

那么变量“a”将变为 9。我可以在 Standard ML 中将其保持为 10 吗?

最佳答案

如果您的函数包含 val a = x ,然后对于 temp(x) 的任何调用,a的值将等于 x 的值.如果你想记住 a 的值当您递归时,从先前的调用开始,您需要将其作为参数传递,如下所示:

fun temp_helper x a =
if a mod (x-1) = 0 then x
else temp_helper (x-1)

fun temp x = temp_helper x x

您还可以使辅助函数成为内部函数。如果你这样做,你实际上可以删除 a作为参数,而是关闭 a像这样:
fun temp x =
let
val a = x
fun helper x =
if a mod (x-1) = 0 then x
else helper (x-1)
in
helper x
end

关于sml - 有没有办法在 SML 的递归函数中保持变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378099/

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