请将以下魔术方阵之程式码,改成递回版_第1页
请将以下魔术方阵之程式码,改成递回版_第2页
请将以下魔术方阵之程式码,改成递回版_第3页
请将以下魔术方阵之程式码,改成递回版_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.請將以下魔術方陣之程式碼,改成遞迴版.From GossipcaterpillarAlgorithm Gossip: 奇數魔方陣說明將1到n(為奇數)的數字排列在nxn的方陣上,且各行、各列與各對角線的和必須相同,如下所示: 解法填魔術方陣的方法以奇數最為簡單,第一個數字放在第一行第一列的正中央,然後向右(左)上填,如果右(左)上已有數字,則向下填,如下圖所示: 一般程式語言的陣列索引多由0開始,為了計算方便,我們利用索引1到n的部份,而在計算是向右(左)上或向下時,我們可以將索引值除以n值,如果得到餘數為1就向下,否則就往右(左)上,原理很簡單,看看是不是已經在同一列上繞一圈就

2、對了。 實作· C #include <stdio.h> #include <stdlib.h> #define N 5 int main(void) int i, j, key; int squareN+1N+1 = 0; i = 0; j = (N+1) / 2; for(key = 1; key <= N*N; key+) if(key % N) = 1) i+; else i-; j+; if(i = 0) i = N; if(j > N) j = 1; squareij = key; for(i = 1; i <= N; i+) f

3、or(j = 1; j <= N; j+) printf("%2d ", squareij); return 0; · Java public class Matrix public static int magicOdd(int n) int square = new intn+1n+1; int i = 0; int j = (n+1) / 2; for(int key = 1; key <= n*n; key+) if(key % n) = 1) i+; else i-; j+; if(i = 0) i = n; if(j > n) j =

4、 1; squareij = key; int matrix = new intnn; for(int k = 0; k < matrix.length; k+) for(int l = 0; l < matrix0.length; l+) matrixkl = squarek+1l+1; return matrix; public static void main(String args) int magic = Matrix.magicOdd(5); for(int k = 0; k < magic.length; k+) for(int l = 0; l < magic0.length; l+) System.out.print(magickl + " "); System.out.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论