php算法 有规律的算

对一个自然数做如下操作,若为偶数,则把它除以2,若为奇数,则把它乘以3加1,经过如此有限次运算后,总可以得到自然数1。  比如22:  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1 。编写一个这样的函数,输入一个数a,按照算法1的操作步骤,直到a变成1,输出 a变成1中间经历的数。

Samor
浏览 1761回答 4
4回答

qq_青枣工作室_0

<?phpfunction bingbao($num) { // 判断是否自然数 if($num<1 || !is_int($num)) return "wrong number"; $result = "$num: "; $numList = []; while($num!==1) { // 判断是否偶数 if($num % 2 == 0) { $num = $num / 2; } else { $num = $num * 3 + 1; } $numList[] = $num; } $result .= implode($numList, ' '); return $result;}// 测试运行效果for($i=1; $i<=10000; $i++) { echo bingbao($i), '<BR><BR>';}

chendahai

递归执行就行啦 次数的话用个static变量存储一下 到1的时候再把次数设为0 就行啦

我哈哈了

<?phpfunction math($a){    $numArray = [];if(is_numeric($a)){    while($a != 1){        if($a%2 == 0){            $a = $a/2;            $numArray[]=$a;        }else if($a%2 == 1){            $a = $a*3+1;            $numArray[]=$a;        }    }}else{    echo 'is not number!';}    echo $a;var_dump($numArray);}
打开App,查看更多内容
随时随地看视频慕课网APP