注册 登录
编程论坛 C++教室

[讨论]超时了~~怎么修改呀~~谢谢了

zgjncn88 发布于 2007-01-09 16:28, 602 次点击

就是f(1)=1 ,f(2)=1
f(n)=(A*f(n-1)+B*f(n-2)) mod 7. ,给你A,B和n,你要算出f(n)的值,mod 表示求模运算,A mod B 表示A除以B的余数,已知(0<A,B<100;0<n<10000)
输入A,B,n的值,输出结果
以下是我的程序,请高人指点
#include<iostream>
using namespace std;
int A,B,n;
int f(int k)
{

if(k==1) return 1;
if(k==2) return 1;
else
{

return (A*f(k-1)+B*f(k-2))%7;

}
}
int main()
{
cin>>A>>B>>n;
cout<<f(n)<<endl;
return 0;
}
想想是一道很简单的题目啊,居然会超时不出来,汗死了~~~n一大就超时,上了30就会超时~~怎么办呢?谢谢了哈~~~

2 回复
#2
sbivfh2007-01-09 16:59
这是个递归调用啊,n越大,那么调用的次数就越多啊,时间就越长
#3
zgjncn882007-01-09 18:34
哦,呵呵~~~知道啦~~谢谢哈!!我用for循环做了,嘿嘿~~
1