JAVA算法经典:兔子繁殖与素数判断
需积分: 12 189 浏览量
更新于2024-07-18
1
收藏 191KB DOC 举报
"经典算法40题,包括JAVA编程中的算法实现,如斐波那契数列、素数判断和水仙花数等"
在编程学习过程中,掌握算法是非常关键的一环,因为它能帮助我们解决复杂问题并提高代码效率。这里我们讨论了三道经典的JAVA算法题,它们分别是:
1. 斐波那契数列
斐波那契数列是一个序列,其中每个数字是前两个数字的和。它的前几项是1, 1, 2, 3, 5, 8, 13, 21...。在【程序1】中,我们看到两种实现斐波那契数列的方法:递归和非递归。递归方法虽然直观,但效率较低,因为存在大量的重复计算。非递归方法通过循环避免了重复计算,提高了效率。
```java
public static int f(int x) {
if (x == 1 || x == 2)
return 1;
else
return f(x - 1) + f(x - 2);
}
```
另一种优化的递归方法是使用动态规划,保存已计算过的值,避免重复计算。
2. 素数判断
在【程序2】中,我们需要找出101到200之间的所有素数。素数是只有两个正因子(1和自身)的大于1的自然数。这里使用了一个简单的判断方法,即检查从2到平方根(x)的所有数是否能整除x。如果可以整除,那么x不是素数,否则是素数。
```java
public boolean isZhishu(int x) {
for (int i = 2; i <= x / 2; i++)
if (x % i == 0)
return false;
return true;
}
```
为了提高效率,我们可以只检查到x的平方根,而不是x/2,因为一个非素数一定有小于或等于其平方根的因子。
3. 水仙花数
水仙花数是指一个三位数,其各位数字立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在【程序3】中,我们需要遍历100到999的所有三位数,检查它们是否为水仙花数。
```java
public static void printNarcissisticNumbers() {
for (int i = 100; i < 1000; i++) {
int sum = i / 100 * 100 + i / 10 % 10 * 10 + i % 10;
if (sum == i)
System.out.println(i);
}
}
```
这40题中的每一道都涉及基础的算法和数据结构,是JAVA入门者很好的实践练习。通过这些题目,我们可以提升逻辑思维能力,理解递归、循环、条件判断等核心概念,并且熟悉如何利用JAVA进行算法实现。这些技能对于成为一名优秀的JAVA程序员至关重要。
点击了解资源详情
点击了解资源详情
点击了解资源详情
178 浏览量
2012-03-20 上传
266 浏览量
点击了解资源详情
点击了解资源详情
2025-01-06 上传
2025-01-06 上传
zhengfuzhe1124
- 粉丝: 3
- 资源: 19