1.递归
这是个画三角型的程序
public void drawTrisngle(float x1,float y1,float x2,float y2,Graphics g,int n){
System.out.println(n);
if(n<12){
float x3=(x1+x2)/2;
double y3=y2+Math.abs(x2-x1)*Math.sqrt(3)/2;
g.drawLine((int)x1,(int)y1,(int)x2,(int)y2);
g.drawLine((int)x1,(int)y1,(int)x3,(int)y3);
g.drawLine((int)x2,(int)y2,(int)x3,(int)y3);
drawTrisngle((x1+x2)/2,y1,x2,y2,g,1+n);
drawTrisngle(x1,y1,(x1+x2)/2,y2,g,++n);
drawTrisngle(((x1+x2)/2+x1)/2,(y1+(float)y3)/2,((x1+x2)/2+x2)/2,(y1+(float)y3)/2,g,n++);
}
}
注意在递归调用的时候计数器 n+1,n++,和n++是有区别的。以后要记得要统一用n+1
2.重绘
这你用了数组来保存每个五子棋的位置
public void mouseClicked(MouseEvent e){
x=e.getX();
y=e.getY();
count++;
if(count%2==0)
g.fillOval(x-16, y-16, 33, 33);
if(count%2==1)
g.drawOval(x-16, y-16, 33, 33);
//设置个数组储存坐标
System.out.println(count);
array[0][count]=x;
array[1][count]=y;
}
这几个程序代码是传递数组的值得
//用于传递数组值的方法
public int[][] getArray(){
return this.array;
}
0
主程序是这样接受值得
// 把棋子中的值传过来
a = DL.getArray();
在输出数组的时候记住会遇到空指针的情况,这是因为有些数组没有被赋值
搜易在输出的之后要加一句//这里的数组用的是static 初始值都为0
//若没用static 需加入if(*[]!=null)
3重绘
这里我们要继承和重写父类中的方法,才能实现重绘
public class qipanFrame extends JFrame {
private static int[][] a;
public static void main(String[] args) {
// JFrame jf=new JFrame();
qipanFrame jf = new qipanFrame();
棋盘重绘的实现
public void paint(Graphics g) {
super.paint(g);
qipan(g);
Aqizi(g);
}
private void Aqizi(Graphics g) {
//这里的数组用的是static 初始值都为0
//若没用static 需加入if(*[]!=null)
int t, f;
for (t = 0; t < 2; t++)
for (f = 0; f < 100; f++) {
if (a[t][f] != 0) {
if (f% 2 == 0)
g.fillOval(a[0][f], a[1][f], 33, 33);
if (f % 2 == 1)
g.drawOval(a[0][f], a[1][f], 33, 33);
}
}
}
public void qipan(Graphics g) {
for (int n = 0; n < 30; n++) {
g.drawLine((n + 1) * 50, 0, (n + 1) * 50, 1600);
g.drawLine(0, (n + 1) * 50, 1600, (n + 1) * 50);
}
}
分享到:
相关推荐
总的来说,递归实现的最简单分型图形是一种引人入胜的编程实践,它结合了数学、艺术和计算机科学,展示了递归的强大潜力。通过学习和实现这样的项目,程序员不仅可以提高编程技巧,还能深入了解分形理论和递归思想。
根据给定的信息,本文将详细解释C#中的递归概念,并通过具体的代码示例来解析递归函数在构建树形结构中的应用。 ### C#递归基础 #### 什么是递归? 递归是一种编程技术,它允许一个方法或函数直接或间接地调用自身...
在编程领域,递归绘图是一种利用递归函数来创建复杂图形或图像的技术。递归是一种函数调用自身的方法,通常用于解决具有自相似性质的问题。在这个“递归绘图”项目中,我们可能看到如何使用JavaScript语言实现递归...
在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...
在IT领域,递归是一种强大的编程技术,常用于解决复杂问题。递归图和递归分析是理解递归过程和优化算法效率的重要工具。本文将深入探讨这些概念,并结合MATLAB环境,阐述如何利用它们进行复杂的系统分析。 首先,...
阿克曼函数是一种非常特殊的数学函数,常用于理论计算和计算机科学中,特别是在讨论递归算法和计算复杂性时。这个函数是由荷兰数学家格奥尔格·阿克曼在20世纪早期提出的,它展示了超越函数的概念,即无法用初等函数...
递归算法与非递归转化 递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。递归的效率一般不高,但是递归比较符合人类的思维方式。一般而言非递归算法更有效;但很多...
### 可并行递归算法的递归多线程实现:深入解析 #### 引言:多线程与并行处理的重要性 随着计算任务日益复杂,传统的单线程编程模型已无法满足高效处理大规模数据的需求。多线程编程作为一种提高程序并发性和性能...
【koch雪花递归绘制】是一种基于分形几何的艺术表现形式,主要利用了数学中的递归原理。在计算机图形学领域,koch雪花通常用于展示复杂的几何形状如何通过简单的规则重复自我构建。这个过程不仅展示了数学的美感,还...
### ABAP简单递归算法解析 #### 一、引言 ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言。它不仅支持传统的过程化编程,还支持面向对象编程和Web开发。本文将深入探讨一个ABAP中...
在ACM(国际大学生程序设计竞赛)中,递归算法是一种常见的解决问题的方法,它通过函数自身调用自身来实现问题的解决。递归的核心在于找到基本情况(base case),即可以直接求解的问题,以及每次递归调用时问题规模...
空间复杂度方面,非递归实现主要取决于分区操作和栈的使用,而递归实现则依赖于递归深度,一般情况下都是O(log n)。 在实际编程中,可以根据具体需求选择非递归或递归实现。非递归版本更适合内存有限或者递归深度...
在本主题中,我们将深入探讨二叉树的三种主要遍历方法:中序遍历、前序遍历和后序遍历,以及如何通过递归和非递归的方式实现这些遍历。 首先,让我们理解递归遍历的概念。递归是一种解决问题的方法,它将问题分解为...
在编程领域,递归是一种强大的工具,它通过函数或过程自身调用来解决问题。在这个场景中,我们关注的是如何使用C语言来实现递归算法来绘制特定的图形,比如雪花图形。这种技术通常用于计算机图形学,它能让我们在...
在编程领域,递归是一种强大的思想,它基于解决问题的子问题与原问题具有相同结构的特点。递归函数是实现递归思想的一种方式,通常在函数内部调用自身来解决复杂问题。本节将深入探讨递归思想和递归函数的概念,并...
阿克曼函数是一种非常特殊的数学函数,它在计算理论和计算机科学中被广泛用来探讨递归的概念。这个函数因其复杂的性质而闻名,特别是在其参数达到一定值时,增长速度极其迅速,以至于很快超出任何可计算的范围。在这...
使用递归的方式来替代for来实现不同行与行之间进行组合。 输入(1,2,3)(4,5,6) 得到 (1 4)(1 5)(1 6)(2 4)(2 5)(2 6)(3 4)(3 5)(3 6)
递归算法是编程中一种强大的工具,它通过调用自身来解决问题或简化复杂的问题。然而,在某些场景下,非递归算法可能更有利于性能优化或理解。本章将探讨如何将递归算法转换为非递归算法。 首先,我们要了解递归的...
在递归过程中,它首先绘制当前三角形,然后对每个边的中点进行处理,生成三个新的小三角形,并对它们进行递归调用,直到递归深度为0。每层递归都会使用不同的颜色来区分不同级别的三角形。 通过以上三种递归图形的...