/**
問題1:猴子吃桃
有一只猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,有又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個,以后每天早上都吃了前一天剩下的一半后又多吃了一個.到第10天早上再想吃的時候,只剩下一個桃子了,求第一天共摘了多少個桃子?
// 答案:第1天摘了1534個,吃了768個,剩余766個
*/
- (void)houZiChiTao {
int n = 1;
NSLog(@"第10天剩余%d個",n);
for (int i = 2; i <= 10; i++) {
n = (n + 1) * 2;
int d = 10 - i + 1;
if(d == 1) {
NSLog(@"第%d天摘了%d個,吃了%d個,剩余%d個",d,n,n / 2 + 1,n - (n / 2 + 1));
} else {
NSLog(@"第%d天剩余%d個,吃了%d個,剩余%d個",d,n,n / 2 + 1,n - (n / 2 + 1));
}
}
}
/**
問題2:猴子吃桃
有一只猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,有又多吃了m個,第二天早上又將剩下的桃子吃掉一半,又多吃了m個,以后每天早上都吃了前一天剩下的一半后又多吃了m個.到第n天早上再想吃的時候,只剩下一個桃子了,求一共摘了多少個桃子?
*/
// m:每天多吃多少個,n:多少天吃完
- (int)houZiChiTaoWithM:(int)m n:(int)n {
int j = 1;
NSLog(@"第%d天,剩余%d個桃子",n,j);
for (int i = 2; i <= n; i++) {
j = (j + m) * 2;
NSLog(@"第%d,剩余%d個",n - (i - 1),j);
}
NSLog(@"一共有%d個",j);
return 0;
}
// 方法2
- (void) allEatTaoWithM:(int)m n:(int)n {
int j = 1;
for (int i = n - 1; i >= 1; i--) {
j = 2 * (j + m);
NSLog(@"第%d,剩余%d個",i,j);
}
NSLog(@"%d",j);
}
// 方法3
//用遞歸計算,k第幾天,m每天多吃多少個,n多少天吃完只剩1個
// int d = [self houZiChiTaoWith:1 m:2 n:10];答案2556
- (int)houZiChiTaoWith:(int)k m:(int)m n:(int)n {
int t;
if (k == n) {
t = 1;
} else {
t = 2 * ([self houZiChiTaoWith:k + 1 m:m n:n] + m);
}
return t;
}
猴子吃桃
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。