1
我正在嘗試將Python中的Fibonacci算法轉換爲C++,除此之外,我在其中的大部分工作正在進行,除了我在語法上的某個地方搞砸之外。Stuck將Python算法轉換爲C++
這是Python版本我目前有:
if n == 0:
return (0, 1) *****
else:
a, b = _fib(n // 2)
c = a * (b * 2 - a)
d = a * a + b * b
if n % 2 == 0:
return (c, d) *****
else:
return (d, c + d) *****
這是我將它譯成C++
int fib2(int n) {
if (n == 0) {
return (0, 1); *****
}
else {
int a = fib2(n/2);
int b = fib2(n/2);
int c = a*(2*b-a);
int d = a*a + b*b;
if (n % 2 == 0) {
return (c, d); *****
}
else {
return (d, c + d); *****
}
}
}
我已經把5星,其中誤差的來源。如果我理解正確,在Python版本中,它將返回兩個斐波納契數字作爲一對。但是,當我在C++中嘗試相同的語法時,它會顯示「預期的表達式」。
我明白爲什麼會出現這種情況,有誰知道我該如何糾正我的C++代碼,以便它可以返回兩個斐波納契數字的元組?
的問題是,你不能在C返回多個值作爲一個元組++的結果。實現像這樣的最好方法是使用指針 –
使返回類型成爲一個元組或對,並返回{0,1} –
@RNar這裏不需要指針,'std :: pair'或'std :: tuple'或'std :: array'都會很好地完成這項工作。特別是陣列。 –