为了账号安全,请及时绑定邮箱和手机立即绑定

php算法 有规律的算

php算法 有规律的算

PHP
Samor 2016-04-13 20:48:43
对一个自然数做如下操作,若为偶数,则把它除以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中间经历的数。
查看完整描述

4 回答

已采纳
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

<?php


function 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>';

}


查看完整回答
1 反对 回复 2016-04-14
?
chendahai

TA贡献6条经验 获得超3个赞

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

查看完整回答
1 反对 回复 2016-04-14
?
我哈哈了

TA贡献1条经验 获得超0个赞

<?php

function 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);

}



查看完整回答
反对 回复 2016-08-21
  • 4 回答
  • 0 关注
  • 1760 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信