c - 简单的GCD程序无法运行

标签 c crash greatest-common-divisor

为什么这个程序不起作用?这是使用递归函数的简单最大公约数程序。它编译没有错误,但是当我运行 program.exe 时它只是崩溃:“程序已停止工作”。我已经在 codeblocks 和 Notepad++ 上试过了。我使用 gcc 编译器。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int gcd(int,int);
int main(int argc,const char* argv[]){
int a;
int b;
a = atoi(argv[1]);
b = atoi(argv[2]);
printf("The greatest common divisor of %d and %d is %d\n",a,b,gcd(a,b));
return 0;
}
int gcd(int a,int b){
    if(a==0)
        return a;
    else
        return gcd(b, a%b);
}

最佳答案

你有这个错误:

  if(a==0)

应该是

  if(b==0)

你想检查除数不是 0,不是被除数。

关于c - 简单的GCD程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102354/

相关文章:

C编程指针和数组

c - C语言中如何判断链表是否为空

c - 避免在 C 中使用大型 switch/if block 的编程技术/风格?

c++ - 反序列化中的文件损坏,如何防止崩溃?

linux - mmap()之后,写入返回地址可以,但是读取会导致系统崩溃。为什么?

greatest-common-divisor - 下面使用按位运算求两个数的 GCD 的函数是如何工作的?

c - 如何检查两个文件名是否指向同一个物理文件

algorithm - 找到 n 个数字的 gcd 的最快方法是什么?

c++ - 尝试将 C 代码转换为 C++ - 交互式二进制欧几里得算法

windows - 分析msvcr80.dll中的应用程序故障,故障地址0x00008aa0