关于迭代的几道题

1.一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子
都不死去,问到第十二月时,该饲养场共有兔子多少只?

思路:这是一个典型的递推问题。
(1)设第一个月兔子只数为R1.
第二个月的兔子只数为R2,第n个月的只数Rn,则
R1=1
R2=R1+R1*1 =2
R3=R2+R2*1 =4

根据这个规律可以推出递推公式:
Rn=2*Rn-1 (n>=2)

代码实现:

public class TestIterate1 {
public static void main(String[] args) {
int x = 1;
int y = 0;
for (int i = 2; i <= 12; i++) {
y = x * 2;
x = y;
}
System.out.println("The value is :"+x);

}
}

 

2.阿米巴用简单分裂的方式繁殖。它每分裂一次用三分钟。将若干个阿米巴放在一个盛满营养液的容器内,45分钟后容器充满了阿米巴。已知
容器最多可以装1048576个。试问,开始的时候往容器房多少个阿米巴?请编程求解。

思路:
(1)当前状态下由于容器已经充满,所以该容器中的阿米巴有1048576个.
(2)三分钟分裂一次,45分钟就相当于分裂了15次.
(3)它采用的是简单分裂的方式,也就是每分裂一次就相当于在原来数量n基础上乘2
(4)则我们可以知道:N14=N15/2, N13=N14/2,N12=N13/2...,让这个迭代公式重复执行 15 次,就可以倒推出第 1 次分裂之前的阿米巴

代码实现(Java):

public class TestIterate2 {

public static void main(String[] args) {
int x = 1048576;
for (int i = 0; i < 15; i++) {
x = x / 2;

}
System.out.println(x);
}

}

3.验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪的现象:对于任何一个自然数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1.如此经过有限次运算后,总可以得到自然数1.人们把谷角静夫的这一发现叫做"谷角猜想".

要求:编写一个程序,把 n 经过有限次运算后,最终变成自然数 1 的全过程打印出来。

思路:此题我们虽然不能确定这个迭代过程执行多少次,但是我们可以确定结束此迭代过程的条件,那就是当自然数n==1的时候.

实现代码(Java):

public class TestIterate3 {

public static void main(String[] args) {
int n = 10;
System.out.println(n);
while (n != 1) {
if (n % 2 == 0) {
n /= 2;

} else {
n = n * 3 + 1;
}
System.out.println(n);
}

}
}
posted @ 2009-11-04 14:57  Chris Wang  阅读(788)  评论(0编辑  收藏  举报