最近学习了关于递推的知识,又要写博客,所以本人就很“表脸的”出来写一篇关于递推的文章。
前面的基础步骤我也就不写了,直接把图发出来吧。
这里提醒大家一句的是,一定要审好题,注意数组的大小不要太小,也不要太大了,想想,我就是因为数组的大小不对,被坑了无数次;
好了,接下来,我们应该怎么做呢?
首先,题中告诉大家的是数列的第一个数与第二个数都是1,所以应该给a[25]定值,就定个a[25]={0,1,1}吧;
接着,就要用到递推中最关键的“黑科技”了,那就是函数;
我自己定义了一个函数
图中的fblq也就是斐波拉契的缩写,后面的(int n)也就是表示关于整数n的意思,
接着,就要定义这个函数了,
当n为1或2时,最后输出的结果也应该就是1;
当n不为1或2时,所得的结果也应该就是前两个数相加所得的结果
代码也就为:
{
if(n==1||n==2) return 1;
if(a[n]) return a[n];
a[n]=fblq(n-1)+fblq(n-2);
return a[n];
}
最后,在输出时就应该给函数调用返回值了;
代码为:printf("%d\n",fblq(q));
至此,所有的代码也就写完了;
最后,提交上去给大家看看: