2

99 のような数字があるので、次のような 1 桁の数字を取得する必要があります -

9*9 = 81
8*1 = 8

ex2:
3456 3*4*5*6
360 3*6*0

数値を文字/文字列に変更してから、隣接する各 .

問題をもう少し複雑にしてみましょう。N を 1 桁にするのに必要なステップ数を取得したい場合、再帰はステップを失い、1 つのメソッドのみで実行する必要があります。

4

4 に答える 4

4

それらが整数であると仮定すると、基数 (10) による除算とモジュラスを使用できます。

81 / 10 = 8
81 % 10 = 1

2 番目の例では、while (X >= 10)ループを使用します。

于 2012-04-26T14:48:22.493 に答える
1
public static int digitMultiply(int number) {
    int answer = 1;
    while (number > 0) {
        answer=answer*(number % 10);
        number = number / 10;
    }
    return answer;
}

それが役に立てば幸い!!乗算する簡単なアルゴリズム。

于 2012-04-26T14:57:32.323 に答える
1

この再帰関数はそれを行う必要があります...

int packDown( int num ) {
  if( num < 10 ) return num ;
  int pack = 1 ;
  while( num > 0 ) {
    pack *= num % 10 ;
    num /= 10 ;
  }
  return packDown( pack ) ;
}
于 2012-04-26T14:53:06.667 に答える
1

次の単一再帰メソッドも機能するはずです。

int multDig(int number){
  if(number >= 10)
    return multDig((number%10) * multDig(number/10));
  else
    return number;
}
于 2012-04-26T15:15:15.090 に答える