Javascript使用简单递归函数通过引用传递数字问题
我构建了这个简单的递归函数 递归很容易看到,因为它应该绘制一个树状的嵌套框模式。在每次迭代中,框也会稍微向下移动,以使重叠线的位置更加清晰Javascript使用简单递归函数通过引用传递数字问题,javascript,Javascript,我构建了这个简单的递归函数 递归很容易看到,因为它应该绘制一个树状的嵌套框模式。在每次迭代中,框也会稍微向下移动,以使重叠线的位置更加清晰 ___________ 1. | | | | | | | | | | |___________| ___________ 2. |___________| | | | | |
___________
1. | |
| |
| |
| |
| |
|___________|
___________
2. |___________|
| | |
| | |
| | |
| | |
|_____|_____|
|_____|_____|
__ __ __ __
3. |___________|
|_____|_____|
| | | | |
| | | | |
| | | | |
|__|__|__|__|
|__|__|__|__|
|__|__|__|__|
然而,这在迭代3中突然停止工作,这可以从width>100
更改为width>50
中看出
__ __ __ __
3. |_____ |
|__|__| |
| | | |
| | | |
| | | |
|__|__|_____|
|__|__|
|__|__|
似乎值可能是通过引用传递的,但我认为JS中的数字是通过复制值传递的,而且我从头开始创建了大多数传递的值,例如…,x+width,…
和width2=width*0.5
为什么程序不起作用
感谢Benni的轻微更正。第一个猜测:将代码更改为
if (width > 100) {
var width2 = width * 0.5;
box(x, y + 5, width2, height);
box(x + width2, y + 5, width2 , height);
}
第一个猜测:将代码更改为
if (width > 100) {
var width2 = width * 0.5;
box(x, y + 5, width2, height);
box(x + width2, y + 5, width2 , height);
}
第一个猜测:将代码更改为
if (width > 100) {
var width2 = width * 0.5;
box(x, y + 5, width2, height);
box(x + width2, y + 5, width2 , height);
}
第一个猜测:将代码更改为
if (width > 100) {
var width2 = width * 0.5;
box(x, y + 5, width2, height);
box(x + width2, y + 5, width2 , height);
}
在Javascript中,变量总是按值传递。它甚至不支持通过引用传递参数 问题是您使用的是全局变量:
width2 = width * 0.5;
当您进行第一次递归调用时,它将更改全局变量的值,因此第二次递归调用将使用上一次迭代的值
在函数中声明变量,使其为局部变量:
var width2 = width * 0.5;
在Javascript中,变量总是按值传递。它甚至不支持通过引用传递参数 问题是您使用的是全局变量:
width2 = width * 0.5;
当您进行第一次递归调用时,它将更改全局变量的值,因此第二次递归调用将使用上一次迭代的值
在函数中声明变量,使其为局部变量:
var width2 = width * 0.5;
在Javascript中,变量总是按值传递。它甚至不支持通过引用传递参数 问题是您使用的是全局变量:
width2 = width * 0.5;
当您进行第一次递归调用时,它将更改全局变量的值,因此第二次递归调用将使用上一次迭代的值
在函数中声明变量,使其为局部变量:
var width2 = width * 0.5;
在Javascript中,变量总是按值传递。它甚至不支持通过引用传递参数 问题是您使用的是全局变量:
width2 = width * 0.5;
当您进行第一次递归调用时,它将更改全局变量的值,因此第二次递归调用将使用上一次迭代的值
在函数中声明变量,使其为局部变量:
var width2 = width * 0.5;
这似乎很奇怪,应该会有任何不同,虽然它确实有,稍微,代码现在也稍微整洁了一点,无论如何应该是这样,尽管仍然不工作。这里需要局部变量。注意第二个box()调用中的更改,tooIt’这似乎很奇怪,应该会有任何不同,尽管它确实有点不同,但代码现在也稍微整洁了一点,而且应该是这样,尽管仍然不起作用。这里需要局部变量。注意第二个box()调用中的更改,tooIt’这似乎很奇怪,应该会有任何不同,尽管它确实有点不同,但代码现在也稍微整洁了一点,而且应该是这样,尽管仍然不起作用。这里需要局部变量。注意第二个box()调用中的更改,tooIt’这似乎很奇怪,应该会有任何不同,尽管它确实有点不同,但代码现在也稍微整洁了一点,而且应该是这样,尽管仍然不起作用。这里需要局部变量。注意第二个box()调用中的更改,toowhoah,默认情况下不在您的范围内声明?非常感谢你。像这样的静态是一种潜在的强大功能,但我相信最好是在全局定义中使用“var”这样的术语,而不是在本地使用。@alan2欢迎使用Javascript!:Dwhoah,默认情况下不在中的范围内声明?非常感谢你。像这样的静态是一种潜在的强大功能,但我相信最好是在全局定义中使用“var”这样的术语,而不是在本地使用。@alan2欢迎使用Javascript!:Dwhoah,默认情况下不在中的范围内声明?非常感谢你。像这样的静态是一种潜在的强大功能,但我相信最好是在全局定义中使用“var”这样的术语,而不是在本地使用。@alan2欢迎使用Javascript!:Dwhoah,默认情况下不在中的范围内声明?非常感谢你。像这样的静态是一种潜在的强大功能,但我相信最好是在全局定义中使用“var”这样的术语,而不是在本地使用。@alan2欢迎使用Javascript!:D