Fibonacci Sequence(費波那西數列or斐波那契數列)主要是用遞歸的方式來定義。
F0=0
F1=1
Fn=(Fn的n-1)+(Fn的n-2)
(※因為打不出來小n所以打得比較怪※)
他的數列會呈現0, 1, 1, 2, 3, 5, 8, 13, 21, 34...
目前課程練習的比較noob的方式為
fib( N, F)
fib(1,1).
fib(2,1).
fib( N, F) :- N > 2, N1 is N – 1, fib(N1, F1),
N2 is N – 2, fib(N2, F2), F is F1 + F2.
而比較節省暫存記憶體不會導致電腦被佔據過多空間的改良方法
fib2(1,1).
fib2(2,1).
fib2( N, F) :- N > 2, N1 is N – 1, fib(N1, F1),
N2 is N – 2, fib(N2, F2),
F is F1 + F2,
asserta(fib2(N, F)).
目前的問題是Prolog使用asserta的填入方式,:-似乎要多幾個括號=> ()
之前在上機實際練習自己可以成功測試出來(Noob方法大約電腦不夠好27~30就掛掉後者幾乎可以跑到10000)
結果自己回家想要練習一下卻發現怎麼括號加上去都出問題...一直跑出來錯誤
※錯誤範例※
1 ?- asserta(fib(1,1)).
true.
2 ?- asserta(fib(2,1)).
true.
3 ?- asserta(fib(N,F)) ((:-
| N>2,
| N1 is N -1, fib(N1,F1),
| N2 is N -2, fib(N2,F2),
| F is F1 + F2)))).
ERROR: Syntax error: Operator expected
ERROR: asserta(fib(N,F))
ERROR: ** here **
ERROR: ((:-
N>2,
N1 is N -1, fib(N1,F1),
N2 is N -2, fib(N2,F2),
F is F1 + F2)))) .
不知道自己究竟是哪邊謄寫的時候錯誤,請各位高手幫忙查閱指證,謝謝
F0=0
F1=1
Fn=(Fn的n-1)+(Fn的n-2)
(※因為打不出來小n所以打得比較怪※)
他的數列會呈現0, 1, 1, 2, 3, 5, 8, 13, 21, 34...
目前課程練習的比較noob的方式為
fib( N, F)
fib(1,1).
fib(2,1).
fib( N, F) :- N > 2, N1 is N – 1, fib(N1, F1),
N2 is N – 2, fib(N2, F2), F is F1 + F2.
而比較節省暫存記憶體不會導致電腦被佔據過多空間的改良方法
fib2(1,1).
fib2(2,1).
fib2( N, F) :- N > 2, N1 is N – 1, fib(N1, F1),
N2 is N – 2, fib(N2, F2),
F is F1 + F2,
asserta(fib2(N, F)).
目前的問題是Prolog使用asserta的填入方式,:-似乎要多幾個括號=> ()
之前在上機實際練習自己可以成功測試出來(Noob方法大約電腦不夠好27~30就掛掉後者幾乎可以跑到10000)
結果自己回家想要練習一下卻發現怎麼括號加上去都出問題...一直跑出來錯誤
※錯誤範例※
1 ?- asserta(fib(1,1)).
true.
2 ?- asserta(fib(2,1)).
true.
3 ?- asserta(fib(N,F)) ((:-
| N>2,
| N1 is N -1, fib(N1,F1),
| N2 is N -2, fib(N2,F2),
| F is F1 + F2)))).
ERROR: Syntax error: Operator expected
ERROR: asserta(fib(N,F))
ERROR: ** here **
ERROR: ((:-
N>2,
N1 is N -1, fib(N1,F1),
N2 is N -2, fib(N2,F2),
F is F1 + F2)))) .
不知道自己究竟是哪邊謄寫的時候錯誤,請各位高手幫忙查閱指證,謝謝