奇牛学院吧 关注:309贴子:1,138
  • 1回复贴,共1

vjudge平台--递归/动态规划基础问题

只看楼主收藏回复

题目如图:

代码如下:
#include <iostream>
using namespace std;
int A, B;//A B是0
int f(long long int n) {
long long int ret;
if (n == 1) {
return 1;
}
if (n == 2) {
return 1;
}
long long int* values = new long long int[n + 1];
values[1] = 1;
values[2] = 1;
for (int i = 3; i <= n; i++) {
values[i] = (A * values[i - 1] + B * values[i - 2]) % 7;
}
ret = values[n];
delete[] values;
return ret;
}
int main() {
long long int n, A, B;
while (1) {
cin >> A >> B >> n;
if (A == 0 && B == 0 && n == 0) {
return 0;
}
cout << f(n) << endl;
}
return 0;
}
这里全局变量A B在main输入之后 f()调用时是0 求大佬告知原因! 十分感谢!


IP属地:浙江1楼2020-06-03 19:08回复
    问题在于你定义了全局变量的A,B后,又在main 函数中定义了相同的A,B变量,那么,根据同名变量当前作用域{}内的变量会覆盖作用域外的同名变量的原则,main函数中输入A,B 值是保存到main 函数中定义的A,B变量中,并没有修改全局的A、B 变量。


    2楼2020-06-03 21:43
    回复