【算法】递推&递归

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。

题没做够的,去我的另一个博客看看哟!

【算法例题】递推与递归icon-default.png?t=N7T8https://blog.csdn.net/yangyanbin_sam/article/details/139182740?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139182740%22%2C%22source%22%3A%22yangyanbin_sam%22%7D

今天就讲到这里 ,小伙伴们,拜拜!

(本文章禁止转载)

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值