我想使用递归打印1到10个数字,但它不起作用。
代码
function table($num1) {
if( $num1 <= 10 ) {
echo $num1;
echo "<br>";
table($num1++);
}
}
$num = 1;
table($num);
这是错误
致命错误:&#39; 256&#39;的最大功能嵌套级别到达, 中止!
但是当我宣布$num1
全球工作正常时。请有人告诉我背后的原因。
答案 0 :(得分:1)
table($num1++)
表示请将$num1
传递给table()
,然后再将其增加一个。所以这不是你想要的。
您必须改为编写table(++$num1)
。这意味着首先增加$ num1,然后将其传递给table()
。
答案 1 :(得分:0)
因为您在副本中传递变量。所以第一个变量的值仍然是1,你无限地调用你的函数“table”。
默认情况下,对于所有变量(对象除外),PHP在将其传递给函数/方法时会生成一个副本。如果要传递相同的“内存中”变量,则必须通过引用来完成。
$myVar=1;
myFunction($myVar);
之前,你宣布你的功能是这样的:
function myFunction(&myVar) { ...}
此致
答案 2 :(得分:0)
function table($num) {
if( $num <= 10 ) {
echo $num;
echo "<br>";
table(++ $num);
}
}
$num = 1;
table($num);
table(++ $num)
表示首先增加$ num,然后传递给表函数
答案 3 :(得分:0)
function table($value) {
echo $value;
echo "<br>";
$num1=$value+1;
if($num1<=10){
table($num1);
}
}
$num = 1;
table($num);