亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問下那個遞歸的方法我看不明白呀...怎么求的母牛數???

請問下那個遞歸的方法我看不明白呀...怎么求的母牛數???

C C++
蝴蝶不菲 2022-07-14 19:11:58
一母牛從出生起第4個年頭開始每年生一母牛..問第n年有多少母牛??long num_cow(int n){ int i;long sum=1;for(i=4;i<n;i++)sum+=num_cow(n-i);return sum;}for(i=4;i<n;i++)sum+=num_cow(n-i);這怎么做的...我看不懂...哪位高人能夠提供詳細的解釋么...
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

重新看了一下,算法有問題,牛的問題如下:(設小牛是剛剛生下來的牛,老牛是年齡大于4個月可以生小牛的牛)
1月:小牛:1;老牛:0;總數:1(小牛成長中)
2月:小牛:1;老牛:0;總數:1(小牛成長中)
3月:小牛:1;老牛:0;總數:1(小牛成長中)
4月:小牛:1;老牛:1;總數:2(小牛長成老牛,并生下小牛)
5月:小牛:2;老牛:1;總數:3(小牛成長中,本月的老牛又生下小牛)
6月:小牛:3;老牛:1;總數:4(小牛成長中,本月的老牛又生下小牛)
7月:小牛:4;老牛:2;總數:6(4月的小牛長成,本月的老牛又生下小牛)
……
你的程序得到的結果不是這個而是:1,1,1,1,2,3,4,5,7,10……的規律。
其實這個數列和Fibonacci數列差不多,Fibonacci數列的問題是有一只兔子,到第三個月以后就會每月生下小兔子(比生牛要可愛),然后求得每月的總兔子數。

根據你的問題可以得到以下??倲档囊幝桑?br/>n<=3時 sum(n)=1
n>3時 sum(n)=sum(n-1)+sum(n-3)
(這個規律的得出是有道理的,在這里就不說明了)
所以程序如下:
===============================

#include <stdio.h>

int main()
{
long sum(int);
int n;
scanf("%d",&n);
printf("the sum of month %d is %ld",n,sum(n));
scanf("%d");
}

long sum(int n)
{
if(n<=3)
return(1);
else
return(sum(n-1)+sum(n-3));
}

//本程序在dev-cpp下調試通過


查看完整回答
反對 回復 2022-07-18
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

for(i=4;i<n;i++)
{
sum = sum + num_cow(n-i);
}

看懂了嗎

查看完整回答
反對 回復 2022-07-18
  • 2 回答
  • 0 關注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號