如何在java中通过对每个数字进行乘积来从一组数字中查找单个数字

如何在java中通过对每个数字进行乘积来从一组数字中查找单个数字,java,algorithm,Java,Algorithm,我有一个像99这样的数字 现在我需要一个像这样的一位数- 9*9 = 81 8*1 = 8 ex2: 3456 3*4*5*6 360 3*6*0 除了将数字更改为字符/字符串,然后与每个相邻数字相乘之外,获得输出的有效方法是什么 让我把问题稍微复杂一点,如果我想得到使N变成一个位数所需的步数,那么递归可能会失去这些步数,只需要用一个方法来完成。假设这些是整数,你可以使用除法和基数模(10): 对于第二个示例,您希望使用while(X>=10)循环。这个递归函数应该可以 int packDo

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

9*9 = 81
8*1 = 8

ex2:
3456 3*4*5*6
360 3*6*0
除了将数字更改为字符/字符串,然后与每个相邻数字相乘之外,获得输出的有效方法是什么


让我把问题稍微复杂一点,如果我想得到使N变成一个位数所需的步数,那么递归可能会失去这些步数,只需要用一个方法来完成。假设这些是整数,你可以使用除法和基数模(10):


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

这个递归函数应该可以

int packDown( int num ) {
  if( num < 10 ) return num ;
  int pack = 1 ;
  while( num > 0 ) {
    pack *= num % 10 ;
    num /= 10 ;
  }
  return packDown( pack ) ;
}
int packDown(int num){
如果(num<10)返回num;
int-pack=1;
while(num>0){
包装*=数量%10;
num/=10;
}
返回打包(打包);
}

希望能有帮助!!简单的乘法算法。

以下单一递归方法也适用:

int multDig(int number){
  if(number >= 10)
    return multDig((number%10) * multDig(number/10));
  else
    return number;
}

我想你想要那里的电话号码>=10。根据OP的问题,我认为10->1*0==0。你的方法返回10。
public static int digitMultiply(int number) {
    int answer = 1;
    while (number > 0) {
        answer=answer*(number % 10);
        number = number / 10;
    }
    return answer;
}
int multDig(int number){
  if(number >= 10)
    return multDig((number%10) * multDig(number/10));
  else
    return number;
}