У меня есть этот код:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
однако результат продолжает возвращать исходный аргумент. Как я могу вернуть результат, созданный моим тернарным оператором?
У меня есть этот код:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
однако результат продолжает возвращать исходный аргумент. Как я могу вернуть результат, созданный моим тернарным оператором?
Он возвращает аргумент, потому что вы сказали это сделать. Попробуй это.
def FirstFactorial(num)
return (num == 0 ? 1 : num * FirstFactorial(num - 1))
end
Просто добавьте как можно более краткий ответ для потомков:
Ruby использует неявный возврат в последней строке объявления вашего метода.
Таким образом:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
end
Вам нужно установить num равным результату тернарного оператора. Или просто верните его, как в ответе Эльясина.
def FirstFactorial(num)
num = num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
Изменить: хотя помните, что в рубине возвращается результат последней строки, поэтому вы можете просто сказать:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
end
num = 0 ? 1 : num....
- person Buddy   schedule 24.06.2015