Hello!大家好我是@学霸小羊,今天讲讲递推和递归。
递推和递归,虽然只是一字之差,但大不一样。
递推一般用数组,一般是数组的第 i 项能通过前面的项得到。
递归是用函数,在函数内调用自己。
来看一题例题:
例1.一之一个数列为 1,1,2,3,5,8,13,21,34,······请问:这个数列的第n项是多少?
思路:这个其实就是一个斐波那契数列,第 i 项=第 i-1 项 + 第 i-2 项。
这题比较特殊,用递推和递归皆可。
方法1:递推(数组)
通过递推,求出数组的第n项,此方法比较简单,很容易理解。
#include <bits/stdc++.h>
using namespace std;
long long n,a[1000001];
int main()
{
cin>>n;
a[1]=a[2]=1;
for(int i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
}
cout<<a[n];
return 0;
}
方法2:递推(变量)
由于本题没有要求多次访问,所以用变量也可以。
#include <bits/stdc++.h>
using namespace std;
long long n,a,b,c;
int main()
{
cin>>n;
a=b=1;
for(int i=1;i<=n-2;i++)
{
c=a+b;
a=b,b=c;
}
cout<<b;
return 0;
}
方法3:递归
递归这个算法,比较难,请认真听!
所谓递归,就是在函数内调用自己,代码:
#include <bits/stdc++.h>
using namespace std;
long long n;
long long dfs(long long a)
{
if(a<=2) return 1;
return dfs(a-1)+dfs(a-2);
}
int main()
{
cin>>n;
cout<<dfs(n);
return 0;
}
还是差不多,第 i 项=第 i-1 项 + 第 i-2 项。如果是第1、2项,那就固定是1。
题没做够的,去我的另一个博客看看哟!
今天就讲到这里 ,小伙伴们,拜拜!
(本文章禁止转载)