今天上面的帖子有问题,说的不对,抱歉,今天三级,有点晕。
这个题用递归大数不适用,循环次数达到天文数字,如果是走楼梯算法结果不正确啊!条件应该是 if(t>=0 || t<=2) return t;下面是用循环计算的代码,太快了:int fun(int t){ int a[3] = { 0,1,2}; int s=0; int i; for(i=0;i<t;i++) { a[s] = a[(s+2) % 3] + a[(s+1) % 3]; s = (s+1) % 3; } return a[s];}
12楼的大哥确实厉害,运算速度神快,顶一下,供大家学习不过我觉得有个地方应该改一下,这样t为0和1时都能输出1,不知对否int fun(int t){ int a[3] = {1,1,2}; int s=0; int i; for(i=0;i<t;i++) { a[s] = a[(s+2) % 3] + a[(s+1) % 3]; s = (s+1) % 3; } return a[s];}