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