mitugaoyang 发表于 2017-12-23 11:21:28

递归运行时n超过10000就崩了,为什么 codeblock编辑器

#include <stdio.h>
#include <stdlib.h>
void PrintN(int n)
{
    if(n)
    {
      PrintN(--n);
      printf("%d\t",n);
    }
    return;
}
int main()
{
    int n;
    printf("请输入数值:");
    scanf("%d",&n);
    PrintN(n);
    return 0;
}

BngThea 发表于 2017-12-23 11:37:41

弹栈压栈太多,容易奔溃

mitugaoyang 发表于 2017-12-23 11:44:29

BngThea 发表于 2017-12-23 11:37
弹栈压栈太多,容易奔溃

请具体讲解下还是没懂

sp1ral 发表于 2017-12-23 12:22:10

每次调用函数都会将函数入栈直到返回,你10000次就要将10000个函数入栈,返回的时候才出栈,内存消耗相当大,所以会崩溃

BngThea 发表于 2017-12-23 12:59:07

mitugaoyang 发表于 2017-12-23 11:44
请具体讲解下还是没懂

函数调用都是利用栈进行操作,很多编译器会检测调用栈的次数,太多就直接停止运行
页: [1]
查看完整版本: 递归运行时n超过10000就崩了,为什么 codeblock编辑器