SICP 之斐波那契数
生活随笔
收集整理的這篇文章主要介紹了
SICP 之斐波那契数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這是斐波那契數(shù) 中用迭實(shí)現(xiàn)的
(define (fib n) (fib-iter 1 0 n))(define (fib-iter a b count)
(if(= count 0)
b
(fib-iter (+ a b) a (- count 1)))
)
下面關(guān)于它的應(yīng)用 換零錢(qián)方式的統(tǒng)計(jì)
(define (count-change amount)(cc amount 5)
)
(define (cc amount kinds-of-coins)
(cond((= amount 0) 1)
((or (< amount 0)(= kinds-of-coins 0)) 0)
(else (+ (cc amount (- kinds-of-coins 1))
(cc (- amount (first-denomination kinds-of-coins))
kinds-of-coins
)
))
)
)
(define (first-denomination kinds-of-coins)
(cond ((= kinds-of-coins 1) 1)
((= kinds-of-coins 2) 5)
((= kinds-of-coins 3) 10)
((= kinds-of-coins 4) 25)
((= kinds-of-coins 5) 50)
)
)
對(duì)于一種算法最關(guān)鍵的一點(diǎn)還是書(shū)上所說(shuō):如果a(為兌換的總額)為0的話,應(yīng)該算作是有一種換零錢(qián)的方式!
如果a小于0的話應(yīng)該算作有0中的換錢(qián)方式
如果n(為可以使用的兌換面額)為0的話,應(yīng)該算作是有0種換零錢(qián)的方式!
其實(shí),最關(guān)鍵的是第一點(diǎn),一直挺想不通的,為什么,當(dāng)兌換的面額為0的話,卻又有一種換零錢(qián)的方式! 如果,沒(méi)有這條的話,那么迭代是沒(méi)有結(jié)果的!
上面的運(yùn)行結(jié)果是 “292” !
據(jù)個(gè)人猜測(cè)最后應(yīng)該是292 個(gè)1 相加的結(jié)果!
轉(zhuǎn)載于:https://www.cnblogs.com/neve/archive/2011/04/13/2015331.html
總結(jié)
以上是生活随笔為你收集整理的SICP 之斐波那契数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iPhone如何关闭常去地点功能?
- 下一篇: VBA实战技巧精粹011:新建只有1张工