赛程表 (递归调用, 非递归调用)
赛程表 (递归调用, 非递归调用)
package site.wanjiahao.gameTable;public class Main {// 为了方便调试,直接限定数值大小 需要改变也可以动态改变public static int[][] recursionGameAry = new int[8][8];public static int[][] gameAry = new int[8][8];public static void main(String[] args) {RecursionGameTable(8);System.out.println("递归调用:");for (int[] ints : recursionGameAry) {for (int num : ints) {System.out.print(num + "\t");}System.out.println();}gameTable(8);System.out.println("非递归调用:");for (int[] ints : gameAry) {for (int num : ints) {System.out.print(num + "\t");}System.out.println();}}public static void RecursionGameTable(int n) {if (n == 1) {recursionGameAry[0][0] = 1;} else {int m = n / 2;RecursionGameTable(m);copy(m);}}private static void copy(int m) {for (int i = 0; i < m; i++) {for (int squareSize = 0; squareSize < m; squareSize++) {// 上下增加recursionGameAry[i + m][squareSize] = recursionGameAry[i][squareSize] + m;// 对角复制recursionGameAry[i + m][squareSize + m] = recursionGameAry[i][squareSize];recursionGameAry[i][squareSize + m] = recursionGameAry[i + m][squareSize];}}}public static void gameTable(int n) {for (int i = 0; i < n; i++) {// 矩阵大小 1 2 4 8 变化 2的n-1次方 由小变大int squareSize = (int) Math.pow(2, i);if (squareSize > n) {break;} else {if (squareSize == 1) {// 矩阵赋初值gameAry[0][0] = 1;} else {// 4int subSquareSize = squareSize / 2;for (int l = 0; l < subSquareSize; l++) {// 3 2for (int k = squareSize - 1; k >= subSquareSize; k--) {// 赋值gameAry[k][l] = gameAry[k - subSquareSize][l] + subSquareSize;// 上下gameAry[k][l + subSquareSize] = gameAry[k - subSquareSize][l];// 左右gameAry[k - subSquareSize][l + subSquareSize] = gameAry[k][l];}}}}}}
}
赛程表 (递归调用, 非递归调用)相关推荐
- 【恋上数据结构】递归(函数调用过程、斐波那契数列、上楼梯、汉诺塔、递归转非递归、尾调用)
递归(Recursion) 什么是递归? 函数的调用过程(栈空间) 函数的递归调用过程 递归实例分析(1 + 2 + 3 + ... + 100 的和) 递归的基本思想.使用套路 斐波那契数列 fib ...
- 编写函数 int fac(int x)计算 x!的值。在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac)
编写函数 int fac(int x)计算 x!的值.在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac) 递归: #includ ...
- c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...
点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...
- 快速排序和归并排序中一趟的理解(递归和非递归)
引:2019年408中数据结构一道考察快速排序的选择题 答案:D 定位:这道题在考察快速排序中一趟的概念.注意,基本的冒泡,插入,选择排序的一趟概念很容易理解, 接下来我们要讨论的是递归排序算法中(本 ...
- python创建树结构、求深度_数据结构-树以及深度、广度优先遍历(递归和非递归,python实现)...
前面我们介绍了队列.堆栈.链表,你亲自动手实践了吗?今天我们来到了树的部分,树在数据结构中是非常重要的一部分,树的应用有很多很多,树的种类也有很多很多,今天我们就先来创建一个普通的树.其他各种各样的树 ...
- 数据结构:利用栈,将递归转换为非递归的方法
利用栈将递归转换为非递归 对于一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化,可直接写出相应的非递归算法. 步骤 第一次调用的参数push进堆栈,原有递归代码外层加一个while循环,判断 ...
- 剑指offer之中判断二叉树是不是对称二叉树(递归和非递归实现)
1 问题 判断二叉树是不是对称(递归和非递归实现) 如下二叉树,就是对称的二叉树 23 3 1 4 4 1 如下二叉树,就是非对称的二叉树 23 3 1 4 4 2 2 代码实现 #include & ...
- java 递归改非递归_使用Java ThreadLocals的意外递归保护
java 递归改非递归 对于那些使用第三方工具来尝试扩展它们而又不完全了解它们的人来说,这是一个小技巧. 假定以下情况: 您想扩展一个展示分层数据模型的库(假设您要扩展Apache Jackrabbi ...
- 二叉树的遍历-递归与非递归 - 海子
二叉树的遍历-递归与非递归 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方 ...
- C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归)
C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归) 程序之美 1.C语言,计算1乘以3×5*-乘n的积,并输出结果,n值由键盘接收. #include<stdio.h>v ...
最新文章
- window.onload 不执行
- 从linux和ucos的比较中来看进程这个概念
- js只能输入数字[价格等]
- 程序包com.sun.istack.internal不存在
- Spring框架(中) AOP
- 一本好书-《精益创业》
- php 数组元素 转 变量,php变量与数组相互转换的方法(extract与compact)
- HDU5828 Rikka with Sequence
- php界面怎么美化,美化你的应用程序的外观界面
- 按键精灵输出中文乱码,输出不是?,输出如Ö16:48ÀÂ
- 英语话题 topic 4: My hometown
- window10安装minio
- 基于TCP Socket和Websocket实现的相互即时通信系统
- 矩阵乘法的实现(一般形式及单个矩阵的n次幂)
- 淘宝客解析url优惠链接获取商品ID
- 起先于心血来潮的linux学习...
- 画鸟的猎人计算机操作题,《画鸟的猎人》读写迁移
- html5中的meter标签改变颜色规则
- 遥望星空WINDOWS证书生成导出加解密工具
- 爬去微信小程序服务器代码,Python爬取微信小程序通用方法代码实例详解