递归(recursion)和迭代(iterate)

1.递归和迭代都是循环的一种。

2.递归是把数据处理的过程交给机器,迭代是人为推出数据处理过程后进行运算。

3.递归在使用过程中因为不断调用自身(函数调用过程中参数必须压入堆栈保存,直到该层函数返回为止),可能会导致堆栈溢出的错误。

java代码演示:

//迭代和递归解决波菲纳契数列
public class DiguiDiedai {
    static int  diedai(int n,int a,int b){
        if(n ==1){
            return n;
        }else if(n == 2){
            return n;
        }else{
            for(int i=2;i<n;i++){
                int temp;
                temp = a + b;
                a = b;
                b = temp;
            }
            return b;
        }
    }
    static int digui(int n,int a,int b){
        if(n == 1){
            return a;
        }else if(n == 2){
            return b;
        }else{
            return digui(n-1,a,b)+digui(n-2,a,b);
        }
    }
    public static void main(String[] args){
        int a,b,n;
        a = 1;
        b = 1;
        n = 5;
        System.out.println(digui(n,a,b));
        System.out.println(digui(n,a,b));
    }
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递归回溯和迭代回溯都是解决问题的常见方法,它们的主要区别在于求解问题的方式和实现方式。 1. 递归回溯: 递归回溯是通过递归调用函数本身来解决问题的方法。在每一层递归中,它会尝试所有可能的解决方案,并在找到解决方案或无法继续时进行回溯。具体步骤如下: - 确定递归函数的参数和返回值。 - 判断递归终止条件,即找到解决方案或无法继续。 - 在每一层递归中,尝试所有可能的解决方案。 - 如果找到解决方案,返回结果;否则,进行回溯,撤销上一步操作,继续尝试其他可能的解决方案。 递归回溯的优点是代码简洁,易于理解和实现。但是,在某些情况下,递归会导致函数调用栈溢出,并且可能存在重复计算的问题。 2. 迭代回溯: 迭代回溯是通过使用循环和栈来模拟回溯过程的方法。它不使用函数的递归调用,而是手动管理状态和回溯的过程。具体步骤如下: - 使用栈保存当前状态。 - 判断循环终止条件,即找到解决方案或无法继续。 - 在每一次循环中,尝试所有可能的解决方案。 - 如果找到解决方案,返回结果;否则,进行回溯,撤销上一步操作,继续尝试其他可能的解决方案。 迭代回溯的优点是避免了函数调用栈溢出的问题,并且可以更灵活地控制回溯的过程。但是,相比于递归回溯,迭代回溯的实现会稍微复杂一些。 综上所述,递归回溯和迭代回溯都是解决问题的有效方法,选择哪种方法取决于具体的问题和个人偏好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值