码迷,mamicode.com
首页 > 编程语言 > 详细

1、基础算法思想

时间:2015-06-07 17:05:29      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

1、递推法

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

(1)顺推法

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

技术分享
 1 /******************************************************************************************************
 2 *
 3 *  顺推法
 4 *  如果一对兔子每月能生1对小兔子,而每对小兔子在它出生的第三个月里,又开始生1对小兔子,
 5 *  假设在不发生死亡的情况下,由1对初生的兔子开始,1年后能繁殖出多少对兔子?
 6 *
 7 *******************************************************************************************************/
 8 
 9 #include "stdio.h"
10 
11 
12 void main()
13 {
14     int i;
15     int NumMonth[13] = { 0, 1, 1 };
16 
17 
18     for (i = 2; i < 13; i++)
19         NumMonth[i] = NumMonth[i - 1] + NumMonth[i - 2];
20 
21     for (i = 1; i < 13; i++)
22         printf("第%d个月兔子总数:%d\n", NumMonth[i]);
23 
24     while (1);
25 
26 
27 }
View Code

(2)逆推法

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

技术分享
 1 /******************************************************************************************************
 2 *
 3 *  逆推法:
 4 *  父亲准备为小龙的4年大学生活一次性在银行存储一笔钱,使用整存整取得方法,控制小龙每个月的月底只能提取
 5 *  1000块钱准备下个月使用,假设银行一年整存零取的年利息为1.71%,请编程计算出父亲至少需要一次性存入多少钱
 6 *  才够小龙4年大学生活费
 7 *
 8 *******************************************************************************************************/
 9 
10 
11 #include "stdio.h"
12 
13 void main()
14 {
15     int i = 0;
16     float MoneyMonth[49] ;
17 
18     MoneyMonth[48] = 1000;
19 
20     for (i = 47; i > 0; i--)
21         MoneyMonth[i] = (MoneyMonth[i + 1]+1000)/(1+0.00171);
22 
23     printf("至少应该应该存%.3f", MoneyMonth[1]);
24 
25     while (1);
26 
27 }
View Code

 

1、基础算法思想

标签:

原文地址:http://www.cnblogs.com/STM32bo/p/4558493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!