Write a function, persistence
, that takes in a positive parameter num
and returns its multiplicative persistence, which is the number of times you must multiply the digits in num
until you reach a single digit.
For example:
persistence(39) == 3 // because 3*9 = 27, 2*7 = 14, 1*4=4
// and 4 has only one digit
persistence(999) == 4 // because 9*9*9 = 729, 7*2*9 = 126,
// 1*2*6 = 12, and finally 1*2 = 2
persistence(4) == 0 // because 4 is already a one-digit number
代码:
public class Persist { //方法一 public static int persistence(long n) { int times = 0; while (n >= 10) { n = Long.toString(n).chars().reduce(1, (r, i) -> r * (i - '0')); times++; } return times; } //方法二 public static int persistence2(long n) { if(n<10){ return 0; } int times = 1; String str = String.valueOf(n); int sum = getNum(str); while (sum >= 10) { str = String.valueOf(sum); sum = getNum(str); ++times; } return times; } public static int getNum(String str) { int num = 1; for (int i = 0; i < str.length(); i++) { num = num * Integer.valueOf(String.valueOf(str.charAt(i))); } return num; } public static void main(String[] args) { System.out.println(persistence(999)); System.out.println(persistence2(999)); } }