递归和迭代是两种常见的算法和编程思维方式。
递归是一种直接或间接调用自身的问题解决方法,在递归中,会将问题分成更小的问题,直到达到终止条件。
public class Fibonacci {
public static int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
public static void main(String[] args) {
int result = fibonacci(5);
System.out.println(result); // 输出 5
}
}
迭代是通过循环结构重复执行一段代码来解决问题的方法。在迭代中,问题通常通过循环变量和条件语句来控制。
public class FibonacciIterative {
public static int fibonacci(int n) {
if (n <= 1) {
return n;
}
int prev = 0;
int current = 1;
for (int i = 2; i <= n; i++) {
int next = prev + current;
prev = current;
current = next;
}
return current;
}
public static void main(String[] args) {
int result = fibonacci(5);
System.out.println(result); // 输出 5
}
}
递归和迭代都是有效的问题解决方法,具体选择取决于问题的性质和个人偏好。在实际开发中,理解递归和迭代的区别有助于更好地选择和设计算法,以提高代码质量。