矩阵的幂运算
定义的那个矩阵幂运算的递归函数似乎不能正确递归,想了半天也不知问题出在何处,望各位大哥予以指点,在此谢谢了!
代码:
#include "stdafx.h"
#include
#include
using namespace std;
#define N 6
struct matrix
{
int t[N][N];
};
matrix w,ee,a;
matrix mi(matrix a,int nn)
{
int i,j;
int kk;
if(1==nn)
return w;
for(i=1;i
for(j=1;j
for(kk=1;kk
ee.t[i][j]+=w.t[i][kk]*a.t[kk][j];
for(i=1;i
for(j=1;j
w.t[i][j]=ee.t[i][j];
return mi(w,--nn);
}
int _tmain(int argc, _TCHAR* argv[])
{
matrix result;
int i,j;int k,l,step;
int p,q;
for(i=1;i<=N;++i) //输入前的矩阵清零
for(j=1;j<=N;j++)
a.t[i][j]=0;
while(scanf_s("%d %d",&p,&q)) // 图的输入 以 0 0 标志结束输入
{
if((p==0)&&(q==0))
break;
else
a.t[p][q]=a.t[q][p]=1;
}
for(i=1;i
for(j=1;j
w.t[i][j]=a.t[i][j];
for(i=1;i
{
for(j=1;j
printf("%d ",a.t[i][j]);printf("\n");
}
while(1)
{
printf("k to l in s steps \n such as k l steps\n");
cin>>k>>l>>step;
result=mi(a,step);
printf("there %d paths for %d to %d .\n",result.t[k][l],k,l);
for(i=1;i
{
for(j=1;j
printf("%d ",w.t[i][j]);printf("\n");
}
}
return 0;
}
递归
C
矩阵
struct
分享到:
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------