C語言:楊輝三角、魔方陣和遞迴法
阿新 • • 發佈:2018-12-19
#include<stdio.h> #include<assert.h> #define ROW 5 //楊輝三角 //void Fun(int (*arr)[ROW]) //{ // for(int i = 0;i < ROW;i++) // { // for(int j = 0;j <= i;j++) // { // if(i == j || j == 0) // { // arr[i][j] = 1; // } // else // { // arr[i][j] = arr[i-1][j-1] + arr[i-1][j]; // } // } // } //} void Show(int (*arr)[ROW]) { for(int i = 0;i < ROW;i++) { for(int j = 0;j < ROW;j++) { printf("%3d ",arr[i][j]); } printf("\n"); } } //魔方陣 void MagicSqaure(int (*arr)[ROW]) { assert(ROW % 2 != 0); arr[0][ROW/2] = 1; int preRow = 0; int preCol = ROW/2; for(int i = 2;i <= ROW*ROW;i++) { if( arr[(preRow-1+ROW) %ROW] [(preCol+1)%ROW] != 0 ) { preRow = (preRow+1) % ROW ; } else { preRow = (preRow-1+ROW) %ROW; preCol = (preCol+1)%ROW; } arr[preRow][preCol] = i; } } int main() { int arr[ROW][ROW] = {0}; //Fun(arr); MagicSqaure(arr); Show(arr); getchar(); return 0; } ////遞迴法求年齡 //int Age(int n) //{ // int tmp; // if(n == 1) // { // tmp = 10; // return tmp; // } // else // { // tmp = Age(n-1)+2; // return tmp; // } //} ////遞迴法求5的階乘 //int Fun2(int n) //{ // int tmp; // if(n == 1) // { // tmp = 1; // return tmp; // } // else // { // tmp = Fun2(n-1)*n; // return tmp; // } //} //int main() //{ // printf("%d\n",Fun2(5)); // printf("%d\n",Age(5)); // getchar(); // return 0; //}