2015-06-23 3 views
1

У меня есть этот код:Почему возврат пропускает значение, полученное в моем тройном операторе?

def FirstFactorial(num) 

    num == 0 ? 1 : num * FirstFactorial(num - 1) 
    return num 

end 

однако, результат постоянно возвращается первоначальный аргумент. Как я могу вернуть результат, созданный моим троичным оператором?

+0

У вас есть слишком много знаков равенства .. 'Num = 0? 1: num .... ' – Buddy

ответ

2

Он возвращает аргумент, потому что вы сказали сделать это. Попробуй это.

def FirstFactorial(num) 

    return (num == 0 ? 1 : num * FirstFactorial(num - 1)) 

end 
+0

Спасибо! Я продолжал помещать оператора в скобки вместо скобок. – Shawn

+0

Добро пожаловать. Не стесняйтесь принять ответ, если он решит проблему. И помните, пить меньше кофе, больше спать: -P – Elyasin

+1

: P Я собирался, но он сказал, что мне нужно подождать не менее 12 минут .. boo! 5 минут: – Shawn

1

Вам необходимо установить num равным результату тройного оператора. Или просто вернешь его, как в ответе Эльясина.

def FirstFactorial(num) 

    num = num == 0 ? 1 : num * FirstFactorial(num - 1) 
    return num 

end 

Edit: Хотя, помните, что в рубине результат последней строки возвращается, так что вы могли бы просто сказать:

def FirstFactorial(num) 

    num == 0 ? 1 : num * FirstFactorial(num - 1) 

end 
2

Просто добавить в succint ответ как можно ради потомства :

Ruby использует неявные возвращения в последней строке вашего объявления метода.

Таким образом:

def FirstFactorial(num) 

    num == 0 ? 1 : num * FirstFactorial(num - 1) 

end 
+0

возвращение должно быть стыдно за себя! – user12341234

+1

Ах! Простота над всем остальным, спасибо за вашу помощь :) – Shawn

Смежные вопросы