Ruby递归调用自己的函数作为参数

Igg*_*ggy 0 ruby recursion function

如何在Ruby中调用"多重递归函数",将函数作为一个参数一遍又一遍?

由此,我不是指通常的递归函数,如斐波那契序列.假设我有一个叫做的函数hey().它"Hey"在函数内调用函数时打印字符串的次数.澄清:

hey() #=> "Hey "
hey(hey()) #=> "Hey Hey "
hey(hey(hey())) #=> "Hey Hey Hey "
Run Code Online (Sandbox Code Playgroud)

我试过了

def hey(*args)
    "Hey "
end

def hey(*args)
    "Hey " + hey(*args)
end

def hey(n)
    "Hey " + hey(n)
end
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这样的例子.我知道这是可行的,但不知道如何.是*args需要吗?我需要传递常规参数而不是*args吗?

use*_*559 5

这是你在找什么?

def hey(str="")
  "Hey " + str
end

p hey(hey(hey())) # "Hey Hey Hey "
Run Code Online (Sandbox Code Playgroud)