HDU - 2018 母牛的故事

题目

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0

想法

每头刚出生的小母牛在第四年开始每年生一头,那这就类似于斐波那契数列问题(fibonacci)。
回顾一下斐波那契数列

int fibonacci(int n){
    if(n==1||n==2)return 1;
    else return fibonacci(n-1)+fibonacci(n-2); 
}

此题,小母牛在第四年就会像她妈妈一样一年生一个小母牛,所以f(n-1)表示上一年的母牛数,那么f(n-2)就表示三年前的牛数,也就是说,f(n-2)就是第n年具有生育能力的母牛!
那么上一年的母牛加上新生的就等于第n年的母牛。

java代码

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner it = new Scanner(System.in);
        while(it.hasNext()) {
            int n = it.nextInt();
            if(n==0)break;
            Main x = new Main();         //创建对象
            System.out.println(x.fn(n));
        }
    }
    int fn(int n) {
        if(n<=4) return n;
        else return fn(n-1)+fn(n-3);
}
}

c代码

#include<stdio.h>
int fn(int n){
    if(n<=4)return n;
    else return fn(n-1)+fn(n-3);
}
int main()
{
    int n;
    while(scanf("%d",&n)){
    if(n==0)break;
    printf("%d\n",fn(n));
    }
}

个人博客:陪你一起终身学习!|岳金钊&个人博客


posted @ 2017-11-03 23:07  Honyelchak  阅读(194)  评论(0)    收藏  举报