PHP经典算法(八)
2019-12-18 09:33:58 来源:admin 点击:874
【程序12】 题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
public function numFactorial($n)
{
if($n>1)
return $sum = $n * $this->numFactorial($n-1); // 需要注意这点,若是写成函数要替换成函数形式
else
return $n;
}
public function actionNumFactorial()
{
$n =4;
$sum = $this->numFactorial($n); // 调用上面的阶乘方法(函数)
}
【程序13】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
public function myAge($n)
{
if($n == 1)
return $age = 10;
else
return 2 + $this->myAge($n-1);
}
public function actionMyAge1()
{
$n = 5;
echo $this->myAge($n);
}
【程序14】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public function actionIntLength()
{
$num = 1232345;
$num = (string) $num;
$length = strlen($num);
$numstring = '';
for ($i=$length-1;$i>=0;$i--)
{
$numstring .= $num[$i];
}
echo $numstring;
}
【程序15】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
public function actionIsPalindromeNumber()
{
$num = 12321;
$num = (string) $num;
if($num[0] == $num[4] && $num[1] == $num[3])
var_dump('Is Palindrome Number');
else
echo 'false';
}
/*
* 找到所有的5位的回文数
* */
public function actionAllPalindromeNumber()
{
$result = [];
for ($i=10000;$i<99999;$i++)
{
$i = (string) $i;
if($i[0] == $i[4] && $i[1] == $i[3])
$result[] = $i;
}
var_dump($result);
}