我从维基百科的欧几里得扩展算法中找到了这个伪代码,但我不知道如何从函数返回 2 个值。
function extended_gcd(a, b)
if b = 0
return (1, 0)
else
(q, r) := divide (a, b)
(s, t) := extended_gcd(b, r)
return (t, s - q * t)
来源: http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm
最佳答案
您的问题同时标记为 C 和 C++。
在 C 语言中,您实际上不能从一个函数返回两个值,但有几种方法可以达到相同的效果。
您可以返回一个 struct
.参见,例如,div
函数,在 <stdlib.h>
中声明,它返回 div_t
类型的结果,一个包含 quot
的结构和 rem
成员。
或者您可以通过传递指针间接“返回”多个结果:
void func(int *result1, int *result2) {
*result1 = 10;
*result2 = 20;
}
...
int r1, r2;
func(&r1, &r2);
C++ 支持这两种方法以及其他一些方法。例如,C++ 有引用 类型; C++标准库中也有类型,比如std::pair
和元组,可用于此类事情。
但在开始实现之前,您应该决定使用哪种语言。
关于c - 如何将此伪代码更改为 C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670222/