簡體   English   中英

將任何數字轉換為一位數字

[英]Convert any number to one digit number

考慮數字2345,如果將其數字相乘,則得到數字120.現在,如果再次將數字120相乘,則將得到0,這是一個數字。

import java.util.Scanner;

public class SmallestNum 
{
    int prod=1,sum=0;
    void product(int m)
    {         
        while(m!=0)
        {
           int a=m%10;
           m=m/10;
           prod=prod*a;
        }   
       System.out.println(prod);            
    }


   public static void main(String args[])
   {
       Scanner scn=new Scanner(System.in);
       int x=scn.nextInt();
       SmallestNum sn=new SmallestNum();
       sn.product(x);
   }
}

我可以從此代碼中獲得120.但是我如何使用120執行相同的過程並獲得答案0.請幫助我。

您可以在您的while周圍添加另一個循環,結束條件是prod < 10 ,即只有一個數字。

void product(int m)
{
    int prod;
    do {
        prod = 1;
        while(m!=0)
        {
           int a = m%10;
           m = m / 10;
           prod *= a;
        }   
        System.out.println(prod);
     } while (prod >= 10);
}

使用遞歸

void product(int m)
{

        if(m%10 == 0){
        return;
        }

        while(m!=0)
        {
           int a=m%10;
           m=m/10;
           prod=prod*a;
        }

           System.out.println(prod);
           product(prod);//repeat the procedure
}
public int reduceToOneDigit(int inputNumber){
    int result = 1;
    while(inputNumber > 0){
        result *= (inputNumber % 10);
        inputNumber /= 10;
    }
    if (result > 9)
        result = reduceToOneDigit(result);
    return result;
}

基本上,就是:將inputNumber的數字相乘。 如果結果有一位以上(因此結果> 9,至少10位),則對結果進行遞歸調用方法。

另外,也可以使用do-while循環,而無需遞歸:

public int reduceToOneDigitNoRecursion(int inputNumber){
    int result = 1;
    do{
          while(inputNumber > 0){
              result *= (inputNumber % 10);
              inputNumber /= 10;
          }
    }
    while(result > 9);
    return result;
}

遞歸調用函數

  if(String.valueOf(prod).length()>1){
       product(prod)
    } 

完整的代碼

public class SmallestNum 
{
int prod=1,sum=0;
void product(int m)
{

        while(m!=0)
        {
           int a=m%10;
           m=m/10;
           prod=prod*a;
        }
        if(String.valueOf(prod).length()>1){
           product(prod)
        }
           System.out.println(prod);
}

public static void main(String args[])
{
   Scanner scn=new Scanner(System.in);
   int x=scn.nextInt();
   SmallestNum sn=new SmallestNum();
   sn.product(x);
}
}

使成員函數乘積返回一個整數。 然后代替sn.product(x);

int p = sn.product(x);
while (p > 9)
{ 
    p = sn.product(t);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM