有一些错误,学习c(欧几里德算法)

时间:2015-08-31 02:02:44

标签: c

所以我以前在Python中做过一些编程,并尝试使用我从那里使用的一些旧解决方案/方法。但我有一些语法/编译器错误,我觉得我错过了一些东西。可能是一些非常愚蠢的东西,但这里是代码。

//Euclidian Algorithm In C
//a=bq+r gcd(a,b)=gcd(b,r)
//Recursive Solution
//Devin Martin

#define _CRT_SECURE_NO_WARNINGS    // to avoid scanf warning or error
#include <stdio.h>
int main()
{
    int a, b = 0;
    int gcd(a, b); 
    {
        if (b == 0);
            return a;
        return gcd(b, a % b);  //a%b = r
    }
}

错误 严重性代码描述项目文件行

错误LNK2019未解析的函数_main中引用的外部符号_gcd EuclidianAlgorithm D:\ Documents \ Visual Studio 2015 \ Projects \ EuclidianAlgorithm \ EuclidianAlg.obj 1

警告C4700未初始化的局部变量'a'使用EuclidianAlgorithm d:\ documents \ visual studio 2015 \ projects \ euclidianalgorithm \ euclidianalg.c 14

错误LNK1120 1未解析的外部EuclidianAlgorithm D:\ Documents \ Visual Studio 2015 \ Projects \ EuclidianAlgorithm \ Debug \ EuclidianAlgorithm.exe 1

1 个答案:

答案 0 :(得分:2)

您无法在C中的另一个函数内定义函数。此外,函数定义不正确,因为您需要声明参数列表中的参数类型。

#include <stdio.h>

int gcd(int a, int b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);  //a%b = r
}

int main()
{
    printf("gcd(15,6)=%d\n",gcd(15,6));
}