0

我是 C 的初学者,我刚刚写了一个消耗两个数字并返回它们的 gcd 的 ftn。现在我在想,如果您只使用一个数字,您如何使用指针找到 gcd。谁能告诉我是否有办法做到这一点?谢谢。

Example:
gcd(5) = 5 (gcd of 5 and itself)
gcd(10) = 5 (gcd of 10 and 5(from the last call))
gcd (4) = 1 (gcd of 4 and 5(from the last call))
gcd (7) = 1 (gcd of 7 and 1(from the last call))
4

2 回答 2

1

在函数内部使用静态变量,而不使用任何指针。

int PreviousGcd( int n )
{
    static int previous = -1 ; //pick a magic number


    if( previous == -1 )
    {
        previous = n ;
        return previous ;
    }
    else
    {
        int result = gcd( n  , previous ) ;
        previous = n ;
        return result ;
    }
}

如果你真的想要指针,你可以传递地址 n

于 2013-06-15T23:01:46.577 回答
1

您的要求是指向int. 但是,指针可能指向两个ints,因此之前计算的结果可以存储在第二个 s 中int。为了显示:

int input[2] = { 0, 0 };

*input = 5;
printf("%d\n", gcd(input));
*input = 10;
printf("%d\n", gcd(input));
*input = 4;
printf("%d\n", gcd(input));
*input = 7;
printf("%d\n", gcd(input));

int gcd (int *v) {
    if (v[1] == 0) v[1] = v[0];
    /* ...compute GCD of v[0] and v[1], store result in v[1] */
    return v[1];
}
于 2013-06-15T23:32:24.873 回答