算法:(一)递推算法

目录

1.顺推实例

2逆推实例


算法思路

递推算法使用“步步为营”的方法,不断利用已有的信息推导出新的东西。

一顺推法:是指从己知条件出发,逐步推算出要解决问题的方法。例如:斐波拉契数列就可以通过顺推法不断递推算出新的数据。

一逆推法:是从己知的结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的逆过程。

1.顺推实例

月份

大兔子数量

1个月的兔子数量

2个月的兔子数量

兔子的总量

初始状态

0

1

0

1

1月

0

0

1

1

2月

1

1

0

2

3月

1

1

1

3

4月

2

2

1

5

5月

3

3

2

8

6月

5

5

3

13

7月

8

8

5

21

8月

13

13

8

34

9月

21

21

13

55

10月

34

34

21

89

11月

55

55

34

144

12月

89

89

55

233

兔子数列——斐波那契数列

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NUH 13
//兔子数列:斐波那契数列
int main()
{
	int i;
	int fib[NUH] = { 1,1 };

	for (i = 2; i < NUH; i++);
	{
		fib[i] = fib[i - i] + fib[i - 2];
	}
	for (i = 0; i < NUH; i++)
	{
		printf("%d月兔子总数;%d\n", i, fib[i]);
	}
	getchar();
	return 0;

}

2逆推实例

若在第48月小龙大学毕业时连本带息要取1000元,则要先求出第47个月时银行存款的钱数

第47月月末存款=1000/(1+0.0171/12):

第46月月末存款=(第47月月末存款+1000)/(1+0.0171/12)

依次类推,可以求出第45月、第44月…..的月末存款的数值

第45月月末存款=(第46月月末存款+1000)/(1+0.0171/12)

第44月月末存款=(第45月月末存款+1000)/(1+0.0171/12)

第2月月末存款=(第3月月末存款+1000)/(1+0.0171/12)

第1月月末存款=(第2月月末存款+1000)/(1+0.0171/12)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define FETCH 1000
#define RATE 0.0171
int main()
{
	double corpus[49];
	int i;
	corpus[48] = (double)FETCH;
	for (i = 47; i > 0; i--)
	{
		corpus[i] = (corpus[i + 1] + FETCH) / (1 + RATE / 12);
	}
	for (i = 48; i > 0; i--)
	{
		printf("第%2d月末本利合计:%.2f\n", i, corpus[i]);
	}
	getchar();
	return 0;

}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小肝帝!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值