再帰を使用して解決する必要があるとの問題を発見しました。問題は、ある特定の数字が与えられた場合、それに含まれる8の数を数えるべきですが、2つの8が隣にある場合、それは倍数として数えられるべきです。たとえば:数字の出現回数の再帰
48 should return 1
4881 should return 4
8818 should return 5
私はスキームで次のプログラム作った:
(define (count n)
(if (= n 0)
0
(begin
(if (= (remainder n 100) 88)
2
(begin
(if (= (remainder n 10) 8)
1
0))
)
(+ (count (quotient n 10))))))
を問題は、私はそれを実行するたびに、私は何をしないのです、0を返すということですか?私はリストやセットを使用したくない!補助変数を使用する場合。どんな助け?
は、私はあなたが必要とは思わない 'begin's .. – thebjorn
..しかし、あなたは中間の答えに再帰する必要があります(と、どこかあなたは商を定義したい場合があります..?) – thebjorn