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

递归算法

时间:2018-11-04 01:44:37      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:etc   ima   输出   pre   --   bsp   生活   inf   必须   

递归算法是一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型而复杂的问题晨晨转化成与原问题相似的,规模较小的问题来解决,一般来说,递归需要边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进,当递归条件满足时,递归返回。在使用递归时必须要有明确的结束条件,称为递归出口,否则递归将无限的进行下去(死锁)

1、菲波那切数列(顺推)

Fibonacci数列是递归数列,它的每一项都等于前两项和,在生物学中,许多生物现象都存在菲波那切数列的规律

//打印输出20以内的Fibonacci数列 
#include<stdio.h>
int main(){
    int fib[20]={1,1};
    for(int i = 2; i < 20; i++){
        fib[i] = fib[i-1] + fib[i-2];
    }
    for(int i = 0; i < 20; i++){
        printf("%d ",fib[i]);
    }
    printf("\n");
    return 0;
} 

技术分享图片

2、递归逆推算法实现

例子:父亲准备一次性凑齐儿子的大学四年学费,然后儿子采用整存领取的方式,每月的月底取出1000元,准备下个月的开支,假设银行的年利息为1.71%,求出父亲最初需要一次性存多少钱,才能保证儿子大学四年的生活开支。

//递归逆推
#include<stdio.h>
#define FETCH 1000
#define PATE 0.0171
int main(){
    double corpus[49];
    corpus[48] = (double)FETCH;
    for(int i = 47; i > 0; i--){
        corpus[i] = (corpus[i+1]+FETCH)/(1+PATE/12);
    }
    printf("父亲需要一次性准备:%.2f元\n",corpus[1]);
    return 0;
}

技术分享图片

 

递归算法

标签:etc   ima   输出   pre   --   bsp   生活   inf   必须   

原文地址:https://www.cnblogs.com/geziyu/p/9902809.html

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