【发布时间】:2019-03-17 14:43:50
【问题描述】:
我想像string(2^n) 这样编码。
例如。
let string2 s =
match s with
" " -> " "
| _ -> s^s;;
但是,
let rec string128 s =
match s with
" " -> " "
| _ -> string128 s^s ;;
它有溢出。如何仅使用递归函数进行编码? 我不想使用其他参数。比如`n -> n-1'
如果我在 string128 中输入 'a' 然后重复 'a' 128 次。
【问题讨论】:
-
它“溢出”,因为任何字符串与自身的连接都不会产生
" "的基本情况,因此它将无限递归。否则不清楚您要做什么,因为“喜欢string(2^n)”没有任何意义。如果您可以提供一些函数的输入和预期输出示例,则可能会破译您想要完成的任务,但否则您必须实际尝试解释它。 -
如果我在 string128 中输入“a”,然后重复 'a' 128 次。这就是我想做的。
-
好吧,这更有意义。您能否更新您的问题以包含该示例?
-
我做到了。在基本情况下我应该改变什么?
-
我可能理解的不好,但是你为什么不想使用另一个参数呢?你的字符串是常数,它没有其他信息可以用来知道你的递归函数何时停止?
标签: recursion functional-programming ocaml