2016-07-22 62 views
4

其描述是這樣的:如何乘數直到達到一位數字並計算數字?

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 

我只能作出這樣的:

$array = str_split(39); 

    foreach ($array as $key => $value) { 
     echo $array[$key]*$array[$key+1]; 
    } 

下一個我很困惑

任何解決方案來解決我的問題呢?

+1

我喜歡這個問題。除了無聊以外,總是在'php'標籤下重複提問。 +1 –

+0

@AlBundy Yea同意了!有一個很好的機會選擇我的大腦:) – DunnoHowToCode

+0

@DunnoHowToCode你對我的回答太快,但我們現在在歐洲05:20 AM,我有一個16個小時的工作日在我身後,我的大腦正在關閉目前爲止... –

回答

6
$array = str_split('999'); //Your string 
$j=0; //Counter for counting the number of iteration 
while (count($array)>1){ //When more than 2 indexes in array 
for($i=0;$i<count($array);$i++){ //Iterate through all permutations 
    $array = array_product($array); //Multiplies all numbers in array 
    $array = str_split($array); //Split the array up again 
    $j++; //Increment counter(as literal as I can sound) 
} 
} 
echo $j; //Print out the number of times 
+0

非常感謝。它正在工作 –

+0

我需要你幫忙。看看這裏:http://stackoverflow.com/questions/38521602/how-to-make-triangle-roll-up-with-php –

+0

@samueltoh roberto06已經爲您提供了一個完美的例子。 – DunnoHowToCode

0

你也可以使用函數調用,直到它的只有一個數字...

$count = 0; 
persistence(2,$count); 
function persistence($i,&$c){ 
    $v = str_split($i); 
     if(count($v) > 1){ 
      $total = array_product($v); 
      $c++; 
      persistence($total,$c); 
     } 
} 
var_dump($count); 
相關問題