有没有办法在 C++ 或 python 中执行这种类型的递归?

Is there any way to perform this type of recursion in C++ or python?

假设我有一个名为 my_func(a,b,s,t) 的函数。假设,我希望 ab 通过值传递,但我希望 st 通过引用传递。比如,我想知道如何传递 (4,5,s',t')。该函数通过调用 my_func(a/2,b/2,s/2,t/2) 来执行计算。问题是,递归的“底部”有一个基本情况,它为 st.

提供具体值

让我举个小例子:

def e_euclid(a,b,s,t):
    
if (a == b):
    s = 4
    t = -3
    return a


if (a%2 == 0 and b%2 == 0):
    
    if (s%2 == 0 and t%2 == 0):
        return 2*e_euclid(a/2,b/2,s/2,t/2)
    else:
        return 2*e_euclid(a/2,b/2,(s+b)/2,(t-a)/2)
...

因此,我将此函数称为 e_euclid(a,b, something, something),但随后我必须为 st 提供具体值。你们能看出我在这里想做什么吗?

在我 return (s,t) 的地方进行递归会导致我不想执行的艰难计算,所以我想这样做。

您的代码似乎已损坏,a == bs = 4 以及 t = -3 的基本情况 (?) 已经没有意义了。但是请参阅 this C++ implementation 和我的 Python 翻译使用单元素列表而不是 C++ 的引用:

def gcd(a, b, x=[None], y=[None]):
    if b == 0:
        x[0] = 1
        y[0] = 0
        return a
    x1, y1 = [None], [None]
    d = gcd(b, a % b, x1, y1)
    x[0] = y1[0]
    y[0] = x1[0] - y1[0] * (a // b)
    return d

a, b = 123, 321
x, y = [None], [None]
print(gcd(a, b, x, y), x, y, a*x[0] + b*y[0])

输出(Try it online!):

3 [47] [-18] 3

我认为您正在尝试使用该算法的二进制版本,应该以同样的方式可行。