【发布时间】:2020-04-22 15:35:45
【问题描述】:
你好,给定的代码在这里
int a, b, c, d, e, f;
int fn( int n ) {
if( n == 0 ) return a;
if( n == 1 ) return b;
if( n == 2 ) return c;
if( n == 3 ) return d;
if( n == 4 ) return e;
if( n == 5 ) return f;
return( fn(n-1) + fn(n-2) + fn(n-3) + fn(n-4) + fn(n-5) + fn(n-6) );
}
int main() {
int n, caseno = 0, cases;
scanf("%d", &cases);
while( cases-- ) {
scanf("%d %d %d %d %d %d %d", &a, &b, &c, &d, &e, &f, &n);
printf("Case %d: %d\n", ++caseno, fn(n) % 10000007);
}
return 0;
}
它有两个问题。一种是整数溢出。还有一个是Time Limit Exceeded。我使用 long int. 修复了整数溢出问题。但问题在于时间。当我提交代码时,在线评委显示Time Limit Exceeded。请帮我解决这个问题。
【问题讨论】:
-
请贴出实际问题的链接。根据您的代码,如果“n”(最初读取的)小于 6,则结果是未定义的行为
-
在贴出的代码中,随着'n'的增长,递归深度大大增加。这可能导致堆栈溢出。可能不是练习作者想要的。
标签: c