2

我有一个像 99 这样的数字,现在我需要一个数字,比如 -

9*9 = 81
8*1 = 8

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

除了将数字更改为字符/字符串然后与每个相邻的 .

让我把问题稍微复杂一点,如果我想获得使 N 变为一位数所需的步骤数,那么递归可能会丢失步骤并且只需要在一个方法中完成

4

4 回答 4

4

假设这些是整数,您可以使用基数 (10) 的除法和模数:

81 / 10 = 8
81 % 10 = 1

对于第二个示例,您需要使用while (X >= 10)循环。

于 2012-04-26T14:48:22.493 回答
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
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 multDig(int number){
  if(number >= 10)
    return multDig((number%10) * multDig(number/10));
  else
    return number;
}
于 2012-04-26T15:15:15.090 回答