gpt4 book ai didi

c++ - for循环每次计算相同的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:10:17 24 4
gpt4 key购买 nike

我正在尝试实现一个递归关系,它将返回第 k 个项。但是当我更改 k 值时,我收到相同的输出。这是我的代码:

int recurrence(int a, int b, int k, int u0, int u1) {
int u = u0;
int uu = u1;

for (int i = 0; i < k; i++)
uu = a*u1 + b*u0;

return uu;
}

int recurrence2(int a1, int b1, int k1, int u4, int u5) {
int u = u4;
int uu = u5;

for (int i = 0; i < k1; i++)
uu = a1*u5 + b1*u4;


return uu;

}

int main() {
int h;
h = recurrence(7, 1, 5, 3, 5 );
int g;
g = recurrence2(17, 11, 2, 1, 2);

cout << "The result is: " << h;
cout << "The result is : " << g;
}

最佳答案

您在循环中对表达式中的相同值求值,因此无论执行多少次,结果都不会改变。看起来这就是您需要的:

int recurrence(int a, int b, int k, int u0, int u1)
{
for (int i = 0; i < k; i++) {
auto tmp = a*u1 + b*u0;
u0 = u1;
u1 = tmp;
}
return u1;
}

或更简单:

int recurrence(int a, int b, int k, int u0, int u1)
{
for (int i = 0; i < k; i++) {
u0 = a*u1 + b*u0;
std::swap( u1, u0 );
}
return u1;
}

第二个函数需要以同样的方式更改。

PS 你问过如何维护变量的状态以供进一步调用,最好的方法是使用 class 来维护它:

class Recurrence {
int m_a;
int m_b;
int m_u0;
int m_u1;

public:
Recurrence( int a, int b, int u0, int u1 ) :
m_a( a ),
m_b( b ),
m_u0( u0 ),
m_u1( u1 )
{
}

int value() const { return m_u1; }

void interate()
{
m_u0 = m_a * m_u1 + m_b * m_u0;
std::swap( m_u0, m_u1 );
}

void interateN( int n )
{
for( int i = 0; i < n; ++i ) iterate();
}
};

int main()
{
Recurence recurence( 7, 1, 3, 5 );
recurence.iterateN( 5 );
int h = recurence.value();
recurence.iterateN( 5 ); // continue
...
}

实际上,您可能希望该类更通用 - 例如使用不同数量的参数、不同类型、将它们存储在数组中等。这段代码只是为了向您展示这个想法。

关于c++ - for循环每次计算相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42814721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com