再帰法による牛の話(C言語)
*トピックは次のとおりです:(トピックはC言語のWebサイトの1004からのものです)
*まず、トピックの意味が少し不明確です。年の初めと年の初めは2つの異なる概念です。
*指定された入力および出力形式に従って、次の表を推測できます。
*上記の表の簡単な分析:
4年目には4頭の牛がおり、1年目には1頭がAとマークされ、他の3頭は3歳、2歳、1歳です。
質問は、3歳の牛が2年目に出産できることを意味します。つまり、5年目には4歳の牛A(すでにAと同じステータス)がいて、他の4頭は3歳、2歳、1歳、1頭です。歳。
類推すると、8年目には6 A(毎年継続的に出産)、3歳が3歳、4歳が2歳、6歳が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の質問