Java基础入门(递归画出谢尔宾斯基图形)

本文介绍了递归的概念,包括直接递归和间接递归,并强调了递归的重要要点,如必须有结束条件以避免StackOverflowError。接着详细解释了分支递归的运行逻辑和函数堆栈的工作原理。最后,通过谢尔宾斯基三角形的构造,展示了递归在实际问题中的应用,提供了一段相关代码以帮助理解。
摘要由CSDN通过智能技术生成

概念

  • 递归的概念简单来说就是在方法里调用自己的方法。
  • 上一次方法执行的结果会成为下一次执行的初始条件
  • 递归分两种:直接递归间接递归(A调用B,B调用C,C调用A)

要点

  • 构造方法不可递归
  • 递归必须有结束条件(StackOverflowError)
  • 递归的次数不能太多(StackOverflowError)

分支递归

分支递归就是方法里多次调用自身方法

public void A(int a){
   
	...
	A(a);
	A(b);
	A(c);
}
  • 运行逻辑
    上述方法中,假设递归有3个分支,程序只递归2次。程序流程图如图所示,紫色的主函数有两个蓝色的递归分支,然后每个蓝色递归分支中又有三个黄色的分支。然后程序按照流程图的箭头所示运行,值得注意的是,每个分支都是单独运行,它们互相不影响 ,但是分支运行是有顺序的,每个分支执行完成后会执行return语句返回上一级。
    运行逻辑
  • 函数堆栈
    函数堆栈的意义在于决定函数执行的先后顺序,其规则在于先进后出,后进先出。我们用上述的运行逻辑解释函数堆栈,这样我们也清楚这个return语句的意义
    在这里插入图片描述
    对应颜色看,return语句(返回上一级函数)就是按照函数出栈的顺序来执行。

谢尔宾斯基三角形

递归的核心思想就是把一个复杂的问题拆分成几个可用重复的方法实现的小问题。
谢尔宾斯基三角形如图所示,其构造方法如下:

  1. 取一个实心三角形
  2. 沿三边中点连线将三角形分割成四个小三角形
  3. 去掉中间的三角形
  4. 其余三角形重复操作1

谢尔宾斯基三角形

代码展示

package Recursion;

import java.awt.*;
import javax.swing.JFrame;

public class DrawPad extends JFrame{
   

    int[] x = new int[] {
   400, 200, 599};
    int[] y = new int[] {
   200, 599, 599};


    public DrawPad() {
   
        setTitle("三角分形");
        setSize(800,800);
        setDefaultCloseOperation<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G_Y_Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值