当我在PHP中学习递归函数时,我陷入困境。我知道递归函数是那些被自己调用的函数。我的代码是:
function addition_no($x,$y) {
if($x==0) {
return $x;
}
return addition_no($x+$y);
}
echo addition_no(1,2);
当我尝试执行此代码时,我得到:
警告:缺少参数2 for addition_no(),调用 /web/com/13978781902261/main.php在第6行并在中定义 第2行/web/com/13978781902261/main.php
我需要的是通过递归添加两个数字。
答案 0 :(得分:0)
你可以试试这个
return addition_no($x,$y);
你必须检查递归函数的任何条件,否则它将是无限递归..
答案 1 :(得分:0)
警告是适当的,因为您使用不同的参数结构调用其中的函数。 尝试使用阶乘递归函数来了解它的工作原理:
<?php
// Initiating Recursion
echo factorial(5);
//Recursive Function Definition with 1 parameter
function factorial($number)
{
//Break condition for recursion
if($number==1)
return $number;
//Fetch and Stack Recursion
return $number*factorial($number-1);
}
因此,您可以用简单的英语获得基本的递归:
factorial(n) = n x factorial(n-1) = n x (n-1) x factorial(n-2)
对于您的特定情况,您实际上不需要递归,因为您的参数不依赖于先前的参数结果。但是,为了学习,你可以这样做:
<?php
//Summation
function summation($x) {
if($x==0) {
return $x;
}
return $x+summation($x-1);
}
echo summation(5);
//Summation with 2 step
function summation($x,$y) {
if($x<1) {
return $x;
}
return $x+summation($x-$y,$y);
}
echo summation(5,2);
答案 2 :(得分:0)
我创建此代码是为了使用递归来汇总数组中的值:
<?php
//values to add
$add = array(5,4,4,6,7);
function addval($add,$pos) {
if($pos == 0) {
return $add[0];
}
else {
return $add[$pos] + addval($add,$pos-1);
}
}
//last position in vector
$last_position = count($add)-1;
echo addval($add, $last_position);
?>