数字の桁の合計を計算する方法を知っています:
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10)
(sum-of-digits (/ (- x (modulo x 10))
10)))))`
しかし、桁数を数える手がかりがありません。また、線形反復進行によってそれを行う方法もわかりません。
ありがとう!!
数字の桁の合計を計算する方法を知っています:
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10)
(sum-of-digits (/ (- x (modulo x 10))
10)))))`
しかし、桁数を数える手がかりがありません。また、線形反復進行によってそれを行う方法もわかりません。
ありがとう!!
各質問に関するヒント:
1
再帰的なソリューション (あなたのもののような) を末尾の再帰 (線形反復進行を生成するもの) に変換するためのいくつかの戦略があります。短いリストは次のとおりです。
あなたは答えに非常に近いです。
桁の合計を桁数に変更する方法を理解するために、いくつかのテスト ケースを作成してみてください。テスト ケースには、関数を呼び出す例と、期待される結果を含める必要があります。
補足として、これは生成再帰の例であり、「リストに数字を追加する」、「リスト内の要素を数える」などの一連の問題を完了するまで、それに取り組むべきではありません。 .