本人正在写一个矩阵的搜索程序,需要迭代访问矩阵中的元素。
由于矩阵比较大,在调试时,迭代的部分显示stack overflow错误,
请问各位大侠,该如何解决呀?
谢谢!!!
对了,各位可否可以详细的解释一下递归和迭代的区别。谢谢我的矩阵搜索程序如下(伪代码):
main()
{
  for (矩阵行数搜索)
   for(矩阵列数搜索)
    if(条件)
     {矩阵某元素赋值;func(矩阵某元素行号,矩阵某元素列号);}
}
func(矩阵某元素行号,矩阵某元素列号)

 if(条件){矩阵某元素赋值;func(矩阵某元素行号,矩阵某元素列号);}
 if(条件){矩阵某元素赋值;func(矩阵某元素行号,矩阵某元素列号);}
  ........ 

解决方案 »

  1.   

    你只是这样写个伪代码我怎么可能看得出哪里有问题?一般stack overflow都是你递归的边界条件没写好。一般来说,递归是自己调用自己,如
    int fact( int x )
    {
        return x?x*fact(x-1):1;
    }迭代是一种不断用变量的旧值递推新值的过程
    如:求两正整数的最大公约数
    原理:1.比较两数的大小,用大数除以小数,将得到一个余数;2.再将小数作为先前的大数,余数作为先前的小数,再重复第一步;3.直到所得的余数为0时停止,那么我们得到的最后那一个余数就是他们的最大公约数。
    模型:假设两正整数为m和n,且m>n.
          u=m,v=n
          当r=m/n不为0时,则有:
              u=v;
              v=r;
          当r为0时,输出v。