返回首页 设为首页 加入收藏
政务公开
 日常检查
 法制宣传
 专项整治
当前位置:主页 > 政务公开 >
站内搜索:
政务公开  

C语言或C语言如何实现尾调用消除

2019-11-17 04:07:40

只能人肉改成循环。方法如下:首先我们有一个尾递归程序(assume你知道什么是尾递归,所以不会把这个算法用在非尾递归函数上)intFuck(Bitch*bitch){if(bitch==nullptr)return0;elsereturn1+Fuck(bitch->shit);//我们知道,+是左结合的。//所以虽然这个形式不是尾递归,但是有等价的写法。}然后我们就可以在整个函数上加一个while(true)在递归return的地方continue在非递归return的地方break所有递归调用改成对参数的重新赋值。由于+要改成aggregation的形式,所以我们需要有一个变量来记录结果。由于0+x==x,所以这个变量的初始值就是0。如果是直接的尾递归形式的话,那么不需要这个变量。intFuck(Bitch*bitch){intscrew=0;while(true){if(bitch==nullptr){screw=screw+0;//0break;//return}else{screw=screw+1;//1+bitch=bitch->shit;//Fuck(bitch->shit)continue;//return}}returnscrew;}多简单啊,然后自己人肉窥孔优化(也就是删掉一些没用的废话)一下就搞定了。

上一篇:必应在浪费微软的资源吗
下一篇:陈奕迅的红玫瑰的歌词到底讲了个什么故事_2
 
支队简介 | 网上投诉举报 | 批评建议 | 联系我们 | 设为主页 | 网站地图
版权所有:通辽市农牧业综合行政执法网 电 话:0475-8517243
蒙ICP备11002798号