递归版辗转相除
② 里用 while 循环做过辗转相除。写成递归只要两句:
- 结束条件:
b == 0时,最大公约数就是 a; - 递推关系:
gcd(a, b) = gcd(b, a % b)。
输入两个正整数,输出它们的最大公约数。例如输入 12 18,应该输出 6,现在却输出 0。运行看画布上每一层的参数,看最后一层该交回哪个数。
代码里以 @youci 开头的 printf 只负责运行后在画布上显示中间值,不影响输出和判题,不用改。
② 里用 while 循环做过辗转相除。写成递归只要两句:
b == 0 时,最大公约数就是 a;gcd(a, b) = gcd(b, a % b)。输入两个正整数,输出它们的最大公约数。例如输入 12 18,应该输出 6,现在却输出 0。运行看画布上每一层的参数,看最后一层该交回哪个数。
代码里以 @youci 开头的 printf 只负责运行后在画布上显示中间值,不影响输出和判题,不用改。