99 のような数字があるので、次のような 1 桁の数字を取得する必要があります -
9*9 = 81
8*1 = 8
ex2:
3456 3*4*5*6
360 3*6*0
数値を文字/文字列に変更してから、隣接する各 .
問題をもう少し複雑にしてみましょう。N を 1 桁にするのに必要なステップ数を取得したい場合、再帰はステップを失い、1 つのメソッドのみで実行する必要があります。
それらが整数であると仮定すると、基数 (10) による除算とモジュラスを使用できます。
81 / 10 = 8
81 % 10 = 1
2 番目の例では、while (X >= 10)
ループを使用します。
public static int digitMultiply(int number) {
int answer = 1;
while (number > 0) {
answer=answer*(number % 10);
number = number / 10;
}
return answer;
}
それが役に立てば幸い!!乗算する簡単なアルゴリズム。
この再帰関数はそれを行う必要があります...
int packDown( int num ) {
if( num < 10 ) return num ;
int pack = 1 ;
while( num > 0 ) {
pack *= num % 10 ;
num /= 10 ;
}
return packDown( pack ) ;
}
次の単一再帰メソッドも機能するはずです。
int multDig(int number){
if(number >= 10)
return multDig((number%10) * multDig(number/10));
else
return number;
}