递归为什么报 stackOverflow

FromXAStart 2012-03-04 09:36:17

// 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;
}
...全文
192 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
northcan 2012-03-04
  • 打赏
  • 举报
回复
int temp = printResult(n);

导致无限递归。
x332363930 2012-03-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fromxastart 的回复:]
明白。我的目的是打印一下递归的实现过程?
[/Quote]
你的意思是这个?
#include <stdio.h>

int Print(int n)
{
if(n != 0)
{
Print(n - 1);
printf("%d\n", n);
}
return n;
}

int main()
{
Print(10);
return 0;
}
篾匠 2012-03-04
  • 打赏
  • 举报
回复
栈溢出,首查无限递归
FromXAStart 2012-03-04
  • 打赏
  • 举报
回复
明白。我的目的是打印一下递归的实现过程?
东莞某某某 2012-03-04
  • 打赏
  • 举报
回复
没看懂你的递归函数是干什么的

堆栈溢出了,无限递归了

int temp = printResult(n);
一直执行这句。
W170532934 2012-03-04
  • 打赏
  • 举报
回复
因为你的递归函数没有出口,在函数的第一句: int temp = printResult(n);就将继续递归,而且参数值不变,这样就是无止境的递归下去,直到你的栈溢出。
blingpro 2012-03-04
  • 打赏
  • 举报
回复
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))
}

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧