C 递归函数崩溃

C 递归函数崩溃,c,recursion,C,Recursion,我编写了这个递归函数来计算序列的项: 把它们放在一个最大1000个元素的浮点数组中,但是当我运行并输入浮点a时,这个函数崩溃了,我看不出有什么问题 #include<stdio.h> #include<math.h> void triple_root(float B[1000],int i,float A,float b,float c){ float x; x = 0.333*((A/(b*b))+(1/c)); B

我编写了这个递归函数来计算序列的项:

把它们放在一个最大1000个元素的
浮点数组中,但是当我运行并输入
浮点a
时,这个函数崩溃了,我看不出有什么问题

  #include<stdio.h>
  #include<math.h>

  void triple_root(float B[1000],int i,float A,float b,float c){ 
      float x;
      x = 0.333*((A/(b*b))+(1/c));
      B[i] = x;

      if(fabs(x-b)<=0.00001|| i==999)
          puts(" ");
      else triple_root(B,i+1,A,x,b); 
  }

  int main(){
      float A[1000],b;
      int i;

      scanf("%f",&b);
      triple_root(A,0,b,1,1);

      for(i=0;i<1000;i++){
          printf("%f\n",A[i]);
      }
      getchar();
  } 
#包括
#包括
void triple_root(float B[1000],int i,float A,float B,float c){
浮动x;
x=0.333*((A/(b*b))+(1/c));
B[i]=x;

if(晶圆厂(x-b)没有明确的测试来确保
i
保持在1000以下;您的代码假设递归将在这之前停止,但我看不到任何可以确保这一点的东西。

没有明确的测试来确保
i
保持在1000以下;您的代码假设递归将在这之前停止,但我看不到任何可以确保的东西e这一点。

没有明确的测试来确保
i
保持在1000以下;您的代码假设递归将在该情况发生之前停止,但我看不到任何保证。

没有明确的测试来确保
i
保持在1000以下;您的代码假设递归将在该情况发生之前停止,但我看不到任何东西ng以确保这一点。

即使使用您最近的编辑,代码也没有为我编译。可能您运行的是一个损坏的二进制文件。不过,别担心!我成功地修复了它

  • 删除
    包含。您很少需要此非标准标题。请将
    getch
    更改为
    getchar
  • void main
    更改为
    int main
    main
    返回
    int
    ,而不是
    void

  • Viola!

    即使使用了您最近的编辑,代码也没有为我编译。很可能您运行的是一个损坏的二进制文件。不过,别担心!我成功地修复了它

  • 删除
    包含。您很少需要此非标准标题。请将
    getch
    更改为
    getchar
  • void main
    更改为
    int main
    main
    返回
    int
    ,而不是
    void

  • Viola!

    即使使用了您最近的编辑,代码也没有为我编译。很可能您运行的是一个损坏的二进制文件。不过,别担心!我成功地修复了它

  • 删除
    包含。您很少需要此非标准标题。请将
    getch
    更改为
    getchar
  • void main
    更改为
    int main
    main
    返回
    int
    ,而不是
    void

  • Viola!

    即使使用了您最近的编辑,代码也没有为我编译。很可能您运行的是一个损坏的二进制文件。不过,别担心!我成功地修复了它

  • 删除
    包含。您很少需要此非标准标题。请将
    getch
    更改为
    getchar
  • void main
    更改为
    int main
    main
    返回
    int
    ,而不是
    void


  • Viola!

    你的
    main
    在哪里?我只需要给我的函数一个提示,我正面临一个问题,你的代码没有编译,因为它缺少
    main
    入口点,这就是它即将关闭的原因。或者问一个关于你试图编译这段代码时出现的错误消息的问题,如果没有不要打开
    main
    入口点,或者添加
    main
    入口点。你的
    main
    在哪里?我只需要给我的函数一个提示,我面临一个问题,你的代码没有编译,因为它缺少
    main
    入口点,这就是它即将关闭的原因。或者问一个关于错误的问题当您尝试编译此代码时出现的消息,没有
    main
    入口点,或者添加
    main
    入口点。您的
    main
    在哪里?我只需要给我的函数一个提示,我正面临一个问题,您的代码没有编译,因为它缺少
    main
    入口点,这就是原因它即将关闭。请在没有
    main
    入口点的情况下询问编译此代码时出现的错误消息,或者添加
    main
    入口点。您的
    main
    在哪里?我只需要给我的函数一个提示,我正面临一个问题,您的代码无法编译,因为它是l正在确认一个
    main
    入口点,这就是它即将关闭的原因。请询问有关在没有
    main
    入口点的情况下编译此代码时出现的错误消息的问题,或者添加一个
    main
    入口点。我补充说,如果在停止条件下I=1000,函数将停止,但这没有起作用作业,还有其他帮助吗?1.我们看不到,2.如果使用赋值运算符,则不会“完成作业”…当前编辑在i==23后停止(如果b为1)。我补充说,如果在停止条件下I=1000,函数将停止,但这不起作用,还有其他帮助吗?1.我们看不到这一点,2.如果使用赋值运算符,则不会“起作用”…当前编辑将在I==23(如果b为1)后停止。我补充说,如果在停止条件下I=1000,函数将停止,但这不起作用,还有其他帮助吗?1.我们看不到这一点,2.如果使用赋值运算符,则不会“起作用”…当前编辑将在I==23(如果b为1)后停止。我补充说,如果在停止条件下I=1000,函数将停止,但这不起作用,还有其他帮助吗?1.我们看不到这一点,2.如果使用赋值运算符,则不会“起作用”…当前编辑将在I==23(如果b为1)后停止。谢谢,但我不明白为什么它不适用于我以前的语法和库,即conio 1:/我查看了结果,一切看起来都很好。谢谢,但我不明白为什么它不适用于我以前的语法和库,即conio 1:/我查看了结果