C語言遞迴之母牛的故事

白曦0001發表於2020-12-23

遞迴法下的母牛的故事(C語言)

*題目如下:(該題目來自於C語言網上的1004題)
在這裡插入圖片描述
*首先,該題目的題意有些不清楚,年初和年頭是倆個不一樣的概念。
*我們根據規定的輸入輸出格式,可以推斷出一下表格:

在這裡插入圖片描述

*簡略分析以上表格:

在第四年的時候,有四頭牛,一頭為第一年的母牛記作A,其他三頭分別是3歲,2歲,1歲。
而題目的意思是,3歲的牛在第二年就可以生育。也就意味著,第五年的時候,有奶牛A,4歲奶牛(已經和A具有同等地位),其他四頭分別是,3歲,2歲,1歲,1歲。
依此類推,第8年有6頭A(每年不斷生育),三頭3歲,四頭2歲,六頭1歲。
很容易發現:n年的奶牛數量,是n-1年的奶牛數量與n-3年的奶牛數量之和
*由此,便有以下程式碼:

#include<stdio.h>

int main(){
	
    int a[54]={1,2,3,4};
	int i = 0, j, n;
	int b[100]={0};
	
    for(j = 4; j <= 53; j++){
		a[j] = a[j-1] + a[j-3];//遞迴思想
	}
	
    scanf("%d", &n);
    while(n!=0&&n<55){
        b[i] = a[n-1];//把a[n-1]的值依此賦予b陣列 
		i++;	//記錄賦予的次數 
    	scanf("%d", &n);
	}
	for(j = 0; j < i; j++){
		printf("%d\n", b[j]);
	}
	return 0;
}

這是我的第一篇部落格,如有寫的不恰當的地方,希望各位多多指正,謝謝

題目連結如下:
C語言網1004題

相關文章