关于迭代的几道题
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);
}
}
}
作者:
Chris Wang
出处:
http://chriswang.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。