pythonbreak可以跳出递归吗_怎样强制退出递归函数

错误方法:用“return值”退出循环。

由于递归的调用是层层嵌套的,所以用return返回时需要一层一层逐级向上返回。换句话说,在return之后,只能确保截断当前层的循环,不能终止递归循环。因主它返回到上一层之后还要在上一层上沿其它“分枝”(树的节点)继续往下递归。

示例:

//功能:数组元素全排列

//参数pre:数组型,初始为空,用来存放结果

//参数nex:数组型,初始为原始数组

function arr_all(pre:Array,nex:Array) {

varj:uint=nex.length;

if (j==1) {//满足设定的条件后,

var t=[];

for (vari:uint=0; i

t.push(pre[i]);

}

t.push(nex[0]);

returninfo.appendText("\n"+pc(t));//用return阻止并返回一个值,但所谓的阻止只是截断了当前的层返回了上层。问题是:返回上层后,递归还在继续进行,没有及时退出循环并进入主程序。这不是我们想要的…………………

}

for (var k:uint=0;k

varp:Array=pre.slice();

vars:Array=nex.slice();

p.push(s.splice(k,1));

arr_all(p,s);//递归…………………

}

}

运行结果:图1

递归函数为我们找到了所有的符合条件的结论。而我们只需要第一个,找到了就退出递归。看来,return只是返回了当前循环层的值并往上一层返回。并没有终止递归继教。所以这个方法是错误的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值