1
、题目分析
根据题目要求,
设猴子共摘的桃子个数为
n
即是第一天桃子的个数
n
1
,
第第
二天时桃子个数
n
2
,第三天时桃子个数
n
3
,第四天时桃子个数
n
4
,第五天时桃
子个数
n
5
,第六天时桃子个数
n
6
,第七天时桃子个数
n
7
,第八天时桃子个数
n
8
,
第九天时桃子个数
n
9
,第十天时桃子个数
n
10
。
由题中
“
每天都吃当前桃子的一半且再多吃一个”
很容易知道
n
10
=1
,
(
n
9
/2+1
)
=n
10
,
n
8
-
(
n
8
/2+1
)
= n
9
……
依
次推出公式:
n
i-1
-
(
n
i-1
/2+1
)
= n
i
(0
)
10
i
。
即
n
i-1
= 2*
(
n
i
+1
)
(0
)
10
i
。
2
、数组求解法分析
声明一个长度为
10
的整形数组
a[10],
分别存放各天猴子吃前的桃子数。下
图所示
图
1
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
先将
a[9]
赋值为
1
,用一个循环语句
for(int i=8;i>=0;i--)
a[i]=2*(a[i+1]+1);
为其余各数组元素赋值,则数组元素
a[0]
的值便是该问题
的解。
3
、链表求解法分析
建立单链表,
声明一个类用来对链表的结点指针进行定义,
在初始化函数中
利用头插法创建具有
10
个元素的链表,
并依次安公式
n
i-1
= 2*
(
n
i
+1
)
(0
)
10
i
。
赋值得到一个如图所示的链表。
head