首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

递归为什么报 stackOverflow解决思路

2012-04-12 
递归为什么报 stackOverflowC/C++ code// 0304.cpp : Defines the entry point for the console applicati

递归为什么报 stackOverflow

C/C++ code
// 0304.cpp : Defines the entry point for the console application.//#include "stdafx.h"int printResult(int n){     int temp = printResult(n);   if(n == 0)    {        printf("n ===== %d \t result = %d\n", n, temp);  //here.......      return 1;   }     return printResult(n -1)*n;}int _tmain(int argc, _TCHAR* argv[]){       printResult(10);    return 0;}


[解决办法]
int printResult(int n)
{
int temp = printResult(n); //一直递归啊。。肯定栈溢出。。。
if(n == 0) 
{
printf("n ===== %d \t result = %d\n", n, temp); //here.......
return 1;
}
return printResult(n -1)*n;
}
=》
int printResult(int n)
{
if(n == 1) 
{
return 1;
}
return printResult(n -1)*n;
}

main()
{
printf(printResult(n))
}
[解决办法]
因为你的递归函数没有出口,在函数的第一句: int temp = printResult(n);就将继续递归,而且参数值不变,这样就是无止境的递归下去,直到你的栈溢出。
[解决办法]
没看懂你的递归函数是干什么的

堆栈溢出了,无限递归了

int temp = printResult(n);
一直执行这句。

热点排行