运用递归实现k次幂运算,模拟手工计算
注释掉的输出部分便于调试过程中检查使用
使用说明:输入一个数字k,计算矩阵的k次幂,输出原矩阵以及其k次幂矩阵
矩阵的k次幂可用于以邻接矩阵存储的图的算法中,具体原理涉及到离散数学,在此不作证明。
#include <stdio.h>
#define N 4 //N阶矩阵
void Func(int A[N][N],int B[N][N],int C[N][N],int n,int cnt,int k) //N阶矩阵的k次幂运算 k为奇数 b为最终结果,k为偶数,c为最终结果
{
int i,j,temp,sum=0;
int x=0,y=0;
int v=0;
cnt++; //记录当前计算的幂次数
if(cnt<k)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
// printf("%d\t",A[v][j]);
// printf("%d\t",B[j][i]);
temp=A[v][j]*B[j][i];
sum+=temp;
// printf("%d\n",temp);
}
C[x][y++]=sum;
// printf("%d\n",sum);
sum=0;
if(y>=n)
{
y=0;
x++;
}
if(i==n-1 && v!=n-1)