递归概念和特点:

在数学和计算机科学中,递归是指在方法的定义中使用方法自身。也就是说,递归算法是一种直接或间接调用自身方法的算法。简言之:在定义自身的同时又出现自身的直接或间接调用。注意:递归必须要有一个退出的条件!递归算法解决问题的特点有以下几点:1)递归就是方法里调用自身。2)在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。

迭代概念:

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。

迭代和递归的关系和区别:

从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身;迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环。在循环的次数较大的时候,迭代的效率明显高于递归。

实际问题:求n的阶乘 图解理解:

下面是一个求n的阶乘的Java代码示例:public class Demo6 { public static void main(String[] args) { System.out.println(fact(5)); } public static int fact(int n) { if(n == 1) { return n = 1; }else { return n*fact(n-1); } } }

下面是斐波那契数列的递归实现:

```python

def fibonacci(n):

if n <= 0:

return "Input should be positive integer"

elif n == 1:

return 0

elif n == 2:

return 1

else:

return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(9)) # Output: 34

递归实现:

```cpp

int fib(int n){ if(n > 1) return fib(n-1) + fib(n-2); else return n; // n = 0, 1时给出recursion终止条件 }

```

迭代实现:

```cpp

int fib(int n){ int i, temp0, temp1, temp2; if(n <= 1) return n; temp1 = 0; temp2 = 1; for(i = 2; i <= n; i++){ temp0 = temp1 + temp2; temp2 = temp1; temp1 = temp0; } return temp0; }

```

遇到的问题:在做银行的题目的时候,有遇到一道递归求电阻的题目。但是当时自己写的代码报出StackOverflowError错误。

```java

/** * @author Kino * @create 2022-10-20 20:23 */

public class Test {

public static void main(String[] args) {

double digui = digui(5, 1, 1, 1); // double digui = digui1(5, 1, 1, 1);

System.out.println(digui);

}

public static double digui(int level,double r1,double r2, double r3){

if (level == 1){

return r1 + r2 + r3;

} else {

double sum = r1 + r2 + (r3 * digui(level-1,r1,r2,r3)) / (r3 + digui(level-1,r1,r2,r3));

return sum;

}

}

public static double digui1(int level,double r1,double r2, double r3){

if (level == 1){

return r1 + r2 + r3;

} else {

return r1 + r2 + (r3 * digui1(--level,r1,r2,r3)) / (r3 + digui1(--level,r1,r2,r3));

}

}

}

```

在编程中,有时候我们会遇到一个问题,即使已经对变量进行了修改,但是变量的值仍然保持不变。这可能是因为我们在使用–level时没有正确地更新变量的值。为了解决这个问题,我们需要确保在修改–level时,同时也要更新对应的变量值。

例如,假设我们有一个名为`level`的变量,我们想要将其值设置为1。但是,由于某种原因,即使我们已经将–level的值修改为1,`level`的值仍然保持不变。这时,我们需要检查我们的代码,确保在修改–level时,同时也更新了对应的变量值。

以下是一个简单的示例,演示了如何正确地修改变量值:

```python

# 初始化变量

level = 0

# 修改–level的值

level = level - 1

print("修改后的–level值:", level)

print("修改后的level值:", level)

```

在这个示例中,我们首先初始化了一个名为`level`的变量,其值为0。然后,我们使用`level = level - 1`这行代码来修改–level的值。这样一来,当我们打印出修改后的–level和level值时,我们可以看到它们的值已经被正确地更新了。