如下代码段,两种写法实现递归算法
class Algorithm:Singleton<Algorithm>
{
//算法一 不考虑堆栈溢出
public int RecursionNormal(int index)
{
if(index == 1)
{
return index;
}
else
{
return (index + RecursionNormal(index - 1));
}
}
//避免溢出算法 使用栈进行计算
public int RecursionStack(int index)
{
Stack<int> addNum = new Stack<int>();
while(index >= 1)
{
addNum.Push(index);
index = index - 1;
}
while(addNum.Count > 0)
{
index = index + addNum.Pop();
}
return index;
}
}
输出结果