猿问

递归新手问题

表达能力强的给我讲下递归啊 是在看不懂他怎么执行的?跳来跳去
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才执行完?条件在哪里


扬帆大鱼
浏览 611回答 2
2回答

慕容708150

递归算法解决问题的特点:   (1) 递归就是在过程或函数里调用自身。   (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。   (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。   (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
随时随地看视频慕课网APP
我要回答