简单的递归函数
- Delphi(Pascal) code
function a(b:integer):integer;begin if b <=1 then result:=1 else a(b-1);end;
这段代码按道理说应该返回值是1.但为什么返回值是乱七八糟的数字呢。我跟踪了下
发现当程序执行完后会跳到end;处。在这下断。
他会执行5次。我调用的时候是 a(5) 如果我改成a(3) ,
那么他在end;处会执行3次。
执行的3次是我按F8。他会一直在end;那。3次过后函数才真正结束了。
我搞不懂。result:=1是最后执行的。按道理他的返回值应该1才是。
麻烦各位了。就这点分了
[解决办法]
你这个函数没有默认的返回值(即else后应该要result)
递归结束时,最后一次执行的end就是第1次调用的,所以返回的值永远是第1次调用时的值
但第1次调用时b>1,亦即是没有指定返回值,所以是任意的送一个integer值给你
[解决办法]