c - 如何将此伪代码更改为 C 语法

标签 c pseudocode

我从维基百科的欧几里得扩展算法中找到了这个伪代码,但我不知道如何从函数返回 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/

相关文章:

字符串操作的 C 语法建议?

在 C 中初始化结构数组的编译器错误(数组必须用大括号括起来的初始化器初始化)

c++ - 面试算法查询

c - 并行下载

c - 如何使用C检查文件是否有内容?

c - 如何将二进制数据添加(和使用)到已编译的可执行文件中?

c++ - 在 C++ 中创建正弦查找表

algorithm - k = 4时k元搜索算法的操作次数?

arrays - 使用单一递归结构伪代码查找最小值和最大值

pseudocode - 计算 ISBN 的校验位