我必須在Scheme(R5RS)中生成一個函數,其功能如下: (power-close-to bn) 而且它必須返回一個整數,我稱之爲「e」即: b^e> n 使用b,e和n整數。錯誤:for:undefined(Scheme)
所以,如果我們這樣做: (電源關閉至2 10) 它必須返回4,因爲4是其中B^E的第一個整數>ň 我在迭代的方式使這個功能但我必須以遞歸形式進行。 所以這是我的代碼:
(define e 0)
(define (power-close-to b n)
(for ((e (< (expt b e) n))
(+ e 1))
e))
但是當我嘗試它,方案給出了以下錯誤:「爲:未定義;」 因此,我的方案似乎並不知道程序「for」,但我在互聯網上看到了多個Scheme代碼,所以我不明白爲什麼在我的情況下他說他不知道「for」。
感謝您的幫助!編輯:我試着讓它遞歸,這是我是如何做到的,但我認爲它仍然是迭代的,我真的不知道如何讓它遞歸。
(define e 0)
(define (power-close-to b n)
(if (< (expt b e) n)
(and (set! e (+ e 1)) (power-close-to b n))
e))
我也試過了,但是當我嘗試它,它從來沒有打印任何東西,永遠不會結束(但這是遞歸的(我認爲))
(define e 0)
(define (power-close-to b n)
(if (< (expt b e) n)
(* b (power-close-to b n))
e))
你混淆了「迭代」和「遞歸」的含義。在Scheme中,編寫遞歸解決方案很常見,但其中一些遞歸解決方案在寫爲尾遞歸時表現爲_iteratively_。問題中的第一個實現將不起作用,因爲您的解釋器中不存在'for' –
您使用的是什麼Scheme實現? – uselpa