2015-01-15 2 views
1
1 fun fib 0 = 0                 
    2  | fib 1 = 1                 
    3  | fib n = (fib n-1) + (fib n-2)            
    4                     
    5 val x = fib 8 

Что неверно в этой реализации n-го числа в последовательности фибоначчи? Когда я запускаю программу, она просто висит ...Последовательность Fibonacci в SML

ответ

6

fib n - 1 эквивалентен (fib n) - 1, а не fib (n - 1). Таким образом, линия fib n = (fib n - 1) + (fib n - 2) снова вызывает fib n, вызывая бесконечную рекурсию.

Чтобы устранить проблему, добавьте круглые скобки.

+0

Вы легенда. – Apollo

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