为了账号安全,请及时绑定邮箱和手机立即绑定

递归新手问题

递归新手问题

交互式爱情 2018-11-21 20:13:11
有么有大牛 表达能力强的给我讲下递归啊 是在看不懂他怎么执行的?跳来跳去static string Test(int i){if (i == 10){return i.ToString();//①}else{Test(++i);return i.ToString();//②}}Console.WriteLine(Test(1)); 结果居然是2,1.为什么第①出 return不跳出?2.当满足条件后执行else的 ② 为什么他也不出去,++居然成了--了 ,还有他为什么减到2才执行完?条件在哪里不单单是这个例子 就大牛们帮忙解释下关于递归或许更麻烦的例子
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

递归算法解决问题的特点:

 

  (1) 递归就是在过程或函数里调用自身。

 

  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

 

  (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

 

  (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。


查看完整回答
反对 回复 2018-11-25
?
大话西游666

TA贡献1817条经验 获得超14个赞

1、不是最外层当然不会跳出

2、跟上面原因一样,不是最外层就不会跳出,所以i先加到10后一层层的返回,直到最外层,最外层的i只执行了一次++,所以最后是2


查看完整回答
反对 回复 2018-11-25
  • 3 回答
  • 0 关注
  • 633 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信