如何通过设计模式实现递归算法

最近沉迷于设计模式无法自拔,又于近期灵机一动想到一个自己觉得不错的想法特此来分享下。

话不多说,直接上餐!
在这里插入图片描述

这个设计模式解释起来比较简单,首先类a和类b都实现了一个公共的接口,然后相互依赖,之后在两个类中都重写公共接口的方法,最后再在这两个方法中互相调用彼此的公共接口方法就可以实现循环递归,下面是代码。

// 求1到10的乘积
public interface I1 {
public int loop();
}

public class A1 implements I1{
private int loopNumber = 10;
private B1 b1;

  @override
  public int loop(){
         this.loopNumber-=1;
         if (this.loopNumber == 0) {
              return b1.val;
         }
         return b1.loop();
  }

}

public class B1 implements I1 {
private int val = 1;
private A1 a1;

   @override
   public int loop(){
         this.val *= a1.loopNumber;
         return a1.loop();
   }

}

最后b1实例中的val就是要求的值

————————- 分割线————————-
有问题欢迎留言和评论

Supongo que te gusta

Origin blog.csdn.net/qq_31236027/article/details/119119460
Recomendado
Clasificación