社区
基础编程
帖子详情
如何设计,防止两个函数之间相互调用形成死循环?
inssuc
2011-11-20 01:40:22
有些特征明显的功能,我想分成两个类,但是这两个类之间又会相互用到对方的方法,
这就有可能出现两个函数相互对方,或者再通过更多的函数,连接成死循环。
如果将这多个函数合并为一个较复杂的函数,又失去了简单性。
这种情况请该如何设计呢?
...全文
569
26
打赏
收藏
如何设计,防止两个函数之间相互调用形成死循环?
有些特征明显的功能,我想分成两个类,但是这两个类之间又会相互用到对方的方法, 这就有可能出现两个函数相互对方,或者再通过更多的函数,连接成死循环。 如果将这多个函数合并为一个较复杂的函数,又失去了简单性。 这种情况请该如何设计呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ci1699
2011-11-22
打赏
举报
回复
恍然大悟啊。鸡鸡与蛋蛋确实是可以并存的。
但楼主说的应该属于鸡鸡扯到蛋的问题了。
[Quote=引用 22 楼 foolbirdflyfirst 的回复:]
引用 21 楼 joking520 的回复:
引用 17 楼 foolbirdflyfirst 的回复:
function hao1(){
hao2();
}
function hao2(){
hao1();
}
===========================
这种代码的意思是:
#1.hao1对hao2说,我是鸡,你是蛋
#2.hao2对hao1说,我是蛋……
[/Quote]
码无边
2011-11-22
打赏
举报
回复
[Quote=引用 22 楼 foolbirdflyfirst 的回复:]
引用 21 楼 joking520 的回复:
引用 17 楼 foolbirdflyfirst 的回复:
function hao1(){
hao2();
}
function hao2(){
hao1();
}
===========================
这种代码的意思是:
#1.hao1对hao2说,我是鸡,你是蛋
#2.hao2对hao1说,我是蛋……
[/Quote]好一个鸡蛋定律啊!
ZT_King
2011-11-22
打赏
举报
回复
这跟goto差不多的逻辑该换换了.JJ+DD半天没反应过来.都是老湿.
helloyou0
2011-11-21
打赏
举报
回复
[Quote=引用 16 楼 foolbirdflyfirst 的回复:]
设计出了问题,为啥要从编码的角度去思考?
所以建议你静下心来,不妨画一画图,把你认为的高度耦合的函数想办法细分开,现在出现这个问题,只能说明你的代码设计出了严重问题,把自己都绕进去了。
[/Quote]
+1
QWER_ASDFASDF
2011-11-21
打赏
举报
回复
你可以加个判断
码无边
2011-11-21
打赏
举报
回复
重载。
baoxiaohua
2011-11-21
打赏
举报
回复
直接写出递归不就得了!
或者非要写出这样的话,你应该写一个调用条件,避免进入死循环
helloyou0
2011-11-21
打赏
举报
回复
还真没遇到过,
举个具体点的例子分析分析,怎么个“如果将这多个函数合并为一个较复杂的函数,又失去了简单性”。。。
3楼那种,怎么也写不出来
foolbirdflyfirst
2011-11-21
打赏
举报
回复
[Quote=引用 21 楼 joking520 的回复:]
引用 17 楼 foolbirdflyfirst 的回复:
function hao1(){
hao2();
}
function hao2(){
hao1();
}
===========================
这种代码的意思是:
#1.hao1对hao2说,我是鸡,你是蛋
#2.hao2对hao1说,我是蛋,你是鸡
好吧,哲学上你的问题就是先有蛋,还是先有……
[/Quote]
恭喜你发明了joking250定理
即综上所述 鸡蛋 == 鸡鸡 + 蛋蛋,你比ci1699哲学帝更上二层楼。
必须向LZ道歉,都怪我把楼歪了,LX继续吧。
joking520
2011-11-21
打赏
举报
回复
[Quote=引用 17 楼 foolbirdflyfirst 的回复:]
function hao1(){
hao2();
}
function hao2(){
hao1();
}
===========================
这种代码的意思是:
#1.hao1对hao2说,我是鸡,你是蛋
#2.hao2对hao1说,我是蛋,你是鸡
好吧,哲学上你的问题就是先有蛋,还是先有鸡的问题。
[/Quote]
其实鸡和蛋是同时存在的。不信你看看你身上的JJ和DD。是不是同时存在的。。。
ci1699
2011-11-21
打赏
举报
回复
很明显先有鸡啊。
鸡蛋一定是鸡生的。
所以有hao1()鸡就好了。
[Quote=引用 17 楼 foolbirdflyfirst 的回复:]
function hao1(){
hao2();
}
function hao2(){
hao1();
}
===========================
这种代码的意思是:
#1.hao1对hao2说,我是鸡,你是蛋
#2.hao2对hao1说,我是蛋,你是鸡
好吧,哲学上你的问题就是先有蛋,还是先有鸡的问题。
[/Quote]
gaozhen1990
2011-11-21
打赏
举报
回复
..你限制不就OK了吗? ..要么你调试用 xdebug, 它可以限制的.
kyzy_yy_pm
2011-11-21
打赏
举报
回复
个人观点是不会出现的问题,因为你用到的是对象而不是类的本身,会想调用的只是一个变量,根本会影响到类本身
foolbirdflyfirst
2011-11-21
打赏
举报
回复
function hao1(){
hao2();
}
function hao2(){
hao1();
}
===========================
这种代码的意思是:
#1.hao1对hao2说,我是鸡,你是蛋
#2.hao2对hao1说,我是蛋,你是鸡
好吧,哲学上你的问题就是先有蛋,还是先有鸡的问题。
foolbirdflyfirst
2011-11-21
打赏
举报
回复
设计出了问题,为啥要从编码的角度去思考?
所以建议你静下心来,不妨画一画图,把你认为的高度耦合的函数想办法细分开,现在出现这个问题,只能说明你的代码设计出了严重问题,把自己都绕进去了。
happypiggy2010
2011-11-21
打赏
举报
回复
层数限制。
所有这些函数,我一定做层次限制。不能无限调用,导致stack出错。
wxq41007982
2011-11-21
打赏
举报
回复
加个全局变量计数,如果一个非递归函数调用自已超过n次就认为是死循环
dencey
2011-11-20
打赏
举报
回复
定义函数以及调用函数的时候总要明白这些函数的细节(作用,参数,返回值之类的)吧,明白了这些你在设计函数的时候怎么会出现死循环呢
黄袍披身
2011-11-20
打赏
举报
回复
不太好说,一般我会分析出一个基类然后在分别继承,没办法 耦合就耦合吧,总好过以后看代码的时候绕来绕去头都晕了。
yunprince
2011-11-20
打赏
举报
回复
额,你能设计出3楼的函数也是个人才呀
你自己写的肯定要加判断呀,
加载更多回复(6)
两个
函数
相互
调用
防止
死循环
最近碰到了一个问题,就是
两个
函数
相互
调用
遭遇
死循环
的问题,想了半天终于想出了一个算法破解,姑且叫它熵递减算法。 问题的抽象代码如下 /* * methodA 和 methodB 循环
调用
,是
死循环
* */ function methodA() { console.log('A的事情'); methodB(); } function methodB() { consol...
js
函数
互相
调用
碰到的问题
js解决
函数
间互相
调用
的
死循环
问题,给一个跳出的条件就行
chatgpt赋能python:Python同一个类中的
函数
如何
相互
调用
在Python中,
函数
调用
是指在程序代码中
调用
函数
来完成特定的任务。一个
函数
通常会接受一些输入参数(可以为空),然后执行一些操作,并返回一个结果(可以为空)。c = a + breturn cprint(result) # 输出 5Python中一个类中的
函数
可以
相互
调用
,只需要使用self关键字来引用即可。在实际编程中,
函数
的
相互
调用
可以大大减少代码量,提高编码效率。同时,也要注意避免出现
死循环
等逻辑错误。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是。
PHP递归
函数
原理及
调用
方法
递归
函数
是一个让人头疼的运行机制,最基本的特点是
函数
本身进行自
调用
,但是需要在
调用
自身前进行判断,满足了
调用
条件就进行
函数
的
调用
,否则退出
调用
,推出后将本程序流程的控制权交还给上一层
函数
执行,否则将进入无限
调用
机制无法退出,从而造成
死循环
,递归
函数
的
调用
方式大概有三种。 1.利用引用做参数 先不管引用做不做参数,必须先明白引用到底是什么?引用不过是指
两个
不同名的变量指向同一块存储地...
sping-循环依赖注入
现象:系统中存在Aservice
调用
Bservice,Bservice
调用
Cservice,Cservice
调用
Bservice。系统中service
之间
存在
相互
调用
,就导致service循环依赖注入。 循环依赖注入是什么:循环依赖其实就是循环引用,也就是
两个
或则
两个
以上的bean互相持有对方,最终
形成
闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图: 注意,这里不是
函数
的循环
调用
,是对象的
相互
依赖关系。循环
调用
其实就是一个
死循环
,除非有终结条件。 解决办法:采用@Lazy懒加载,在使用的时
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章