一世轻尘 发表于 2020-12-30 14:42:27

递归

为啥我输入到6输入的时候,后面会多一个奇怪的数???
#include<stdio.h>
#include<stdlib.h>
int num(int x);
int main()
{
    int n,a,m,i;
    for(i=0;;i++)
    {
      scanf("%d",&n);
      if(n==0)
            break;
    }
    for(i=0;n!=0;i++)
    {
      a=num(n);
    }
        i=0;
    while(a)
    {
      printf("%d\n",a);
                i++;
    }
        system("pause");
    return 0;
}

int num(int x)
{
    if(x<5)
      return x;
    else
      return (x-3+num(x-1));
}

赫尔曼·迈耶 发表于 2020-12-30 15:56:08

18行while(a)这个条件是错的,数组初始化的时候每个变量的数据是不确定的,取决于内存中这个位置之前的数据。你这里恰好a初值为11796480而第二次运行时a初值为0。建议在前面输入时加一个计数器变量count,后面条件改成while(i < count)
页: [1]
查看完整版本: 递归