社区
JavaScript
帖子详情
请问递归函数怎么不用全局变量保存运行时信息?
vanxining
2009-07-31 09:40:17
我记得好像在c中用static **这样的语句可以定义一个在这个递归函数中连续可用的静态变量。可以在js中做到吗?
...全文
169
3
打赏
收藏
请问递归函数怎么不用全局变量保存运行时信息?
我记得好像在c中用static **这样的语句可以定义一个在这个递归函数中连续可用的静态变量。可以在js中做到吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
toury
2009-07-31
打赏
举报
回复
知道JS怎么定义变量的吗?用var 。
var就是英文“变体”的缩写,所以定义变量时不会有C里面的那些int之类的明确类型定义,而通通都是var.
所以很遗憾,static静态定义也不可能了。
不过
function add()
{//第一层
a=0;//这样就直接定义了一个数字类型的全局变量(或者在函数外用 var a=0定义)。
//权且弥补一下无法使用static的遗憾
.....
add()//第二层
}
vanxining
2009-07-31
打赏
举报
回复
是啊,我是说不用这样子可以吗?就像C里面:
int add()
{//第一层
static int a,,,,,
.....
add()//第二层
}
好像这样那个a的内容进入第二层时仍然保持和第一层一样。
ivws_19
2009-07-31
打赏
举报
回复
在函数体外定义一个变量
var a=...;
function xxx(){
...
}
楼主是这意思么
递归函数
中局部变量和
全局变量
有时候会因为不注意
递归函数
中局部变量和
全局变量
,而导致结果和我们期望的不一致,递归中,在递归中的局部变量和
全局变量
,可以类似的看成函数调用时传递方式的按值传递(局部变量)和引用传递(
全局变量
) 局部变量:可以看成两个值,即虽然名字相同,但每次递归时是重新创建的变量,不会覆盖掉上次创建的值;(类似形参与实参不同)
全局变量
:每一次对于
全局变量
进行操作,就会改变它的值。 看下面两个简单的程序,看它们的运行结果 程序一: #include <stdio.h> void f() { char x;
python递归中的
全局变量
3.递归中不能使用不可迭代变量作为
全局变量
,要实现
全局变量
只能传参进去,如代码中的sum_,想要让sum_返回出来,可以通过代码中的形式,在backtrack的结束条件中return
全局变量
sum_,在出栈的时候进行赋值并再次return;4.会造成2、3的差别是因为python中可迭代变量传入的是引用,不可迭代变量传入的是形参;2.递归中可以使用可迭代变量(如list)作为
全局变量
,如代码中的path;1.递归是栈结构,即先进后出,从以下代码打印的结果可以看出;
递归调用中使用
全局变量
或者函数参数
在编写
递归函数
时,我们可以选择使用
全局变量
,也可以选择使用函数参数。这两者的差别在于:
全局变量
的形式,递归结束后必须对该变量修改,恢复原值; 函数参数的形式,因为递归调用函数时,实际上,从内存分布上看,每一层调用都
保存
了该层函数的参数,因此递归返回上层时,不会影响原参数值。 拿一道题举例,求二叉树中和为某一值的路径:
全局变量
的写法:int currentSum = 0; vector
递归函数
、
全局变量
、局部变量、静态变量、常量、指针变量
会调用自己的函数叫
递归函数
如果一个问题可以重复采用,同样的方法拆分,就可以使用
递归函数
解决这样的问题
递归函数
编写原则 1.在函数中用语句描述出问题的拆分方法 2.在函数的开始部分使用分支把不可拆分的情况单独处理(处理完成后应该结束函数) 很多问题既可以采用循环方式解决也可以采用递归方式结束 采用循环方式解决这种问题的思路叫做递推 采用
递归函数
解决这种问题的思路叫做递归
Python的函数的局部变量和
全局变量
、函数参数引用传值、匿名函数lambda和
递归函数
本文介绍了Python的函数的局部变量和
全局变量
、函数参数引用传值、匿名函数lambda和
递归函数
JavaScript
87,910
社区成员
224,616
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章