显示结果后显示错误的原因是什么?

时间:2014-10-18 15:38:12

标签: c

我已经制作了一个程序,用于在递归的帮助下找到任何数字的素数因子。编译程序编译器没有显示任何类型的错误或警告,它也显示正确的结果但问题是显示后结果编译显示的错误类似于" primere.exe正在停止工作"。 (primere是我的节目的名字。请帮忙!

#include <stdio.h>

int prime(int, int);
int main()
{
    int num, i = 2;
    printf("enter the number:\t");
    scanf("%d", &num);
    prime(num , i);
    getch();
}
int prime(int num, int i)
{
    int j = 2;
    if (num == 0)
        return 0;
    if (num % i == 0)
    {
        printf("%d ", i);
        prime(num / i, j);
        return 0;
    }
    else if (num % i != 0)
    {
        prime(num, i + 1);
        return 0;
    }
}

1 个答案:

答案 0 :(得分:1)

将您的if(num==0)更改为if(num==0 || num==1)

因为您的变量num在任何时候都不会来0。 而循环根本不会结束。

示例:如果将12作为num

它将执行prime(12, 2);并打印2。

然后它将执行prime(12/2, 2);

然后它将打印2并执行prime(6/2, 2);

然后它会检查条件3%2==0false

然后它将执行else语句prime(3, 3); 这将打印3并执行prime(3/3, 2);

然后将再次执行prime(1, 2);并在此处递归调用prime(1, 2);,这将永远持续。