スキームの再帰を使用してforループを作成したいと思います。スキームで再帰を使用して値を返す
私は2で停止再帰コードを書きましたが、それは
数を返しません。
JAVAでコードを書く場合、
これは次のようになります。関数はスキームでは、私は
(define (IT n)
(let ((i n))
(if (= i 2) "done"
(IT(- n 1))
)
)
)
スキームは、このコードの動作
(+ i 0)
をさせていないしようとした2
到達するまで、私は、私を変え得ることができるように
global varialbe int i;
public int decreasingNumber(int n)
{
if (n == 2)
return -1
else
{
i = n
return decreasingNumber(n - 1)
}
}
再帰の前に
。
Javaコードが正しくありません - まず、再帰の状態を更新するための外部属性に依存しないでください。次に、再帰によって返された値で何もしていないので、常に-1を返します。私が 'declineNumber(10)'を呼び出すと、期待された結果はどうでしたか? –
'set! 'を使って最上位の変数を変更することができます。これは' define'で最初に定義しなければなりません。そのような基本的な作業のために可変なグローバル変数を使用することは、Schemeの精神に反します。これがなければ何かが達成できるならば、それは通常はすべきです。 –