3个回答
展开全部
该问题属于fibonacci取余的问题
解法如下:
需要注意的是:
1:这道题目,建议用临时变量,没必要用数组存数列,因为题目不关心数列,只关心取余,也无法知道要设置多大的数组合适,设置小了,数组溢出,设置大了,影响内存(特别是像这样定义了这样的大数组data[20000],在之后的找工作,面试是很被动,很容易被刷);
2:为了防止n太大,f(n) 的值导致int存不下,可分步取余(c=(a+b)%10007),然后再加,再取余;
f(n-1)=( f(n-2)+f(n-3) )%10007
f(n-2)=( f(n-3)+f(n-4) )%10007
f(n)=( f(n-1)+f(n-2) )%10007
展开全部
显然是3呀:第一项和第二项都是1,所以第三项是2,第四项就是3啦,执行结果也对!不过你的程序有错误:
#include<stdio.h>
long f(int y)
{ if(y= =1|| y= =2)//"=="中间不能有空格
return 1;
else
return f(y-1)+f(y-2);
}
main( )
{ long x,long f(int y);//long x后面应该是“;”而不是“,”,或者说long f(int y);这个生命可以去掉
x=f(4);
printf(“f(4) is %ld\n”,x);
}
#include<stdio.h>
long f(int y)
{ if(y= =1|| y= =2)//"=="中间不能有空格
return 1;
else
return f(y-1)+f(y-2);
}
main( )
{ long x,long f(int y);//long x后面应该是“;”而不是“,”,或者说long f(int y);这个生命可以去掉
x=f(4);
printf(“f(4) is %ld\n”,x);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询