1. 程式人生 > >C語言:楊輝三角、魔方陣和遞迴法

C語言:楊輝三角、魔方陣和遞迴法

#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;
//}