分析程序流程
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见下图
写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数。
┮┮┮┬┬┬┬┬┬┬
┴┴┴┴┴┴┴┴┴┴
│┄ n-m ┄│┄m┄│
□□□□□□■■■
■■■□□□□□□
源程序:
#include<stdio.h>
void move(int ,int ,int);
void move(int array[20],int n,int m)
{int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0)move(array,n,m);//递归调用,当循环次数m减至0时,停止调用
}
void main()
{
int number[20],n,m,i;
printf("how many numbers?");
scanf("%d",&n);
printf("input %d numbers:\n",n);
for(i=0;i<n;i++)
scanf("%d",&number[i]);
printf("how many place you want to move?");
scanf("%d",&m);
move(number,n,m);//调用move函数
printf("now,they are:\n");
for(i=0;i<n;i++)
printf("%d ",number[i]);
}
但我不清楚move函数是怎样递归调用的,里面的流程是怎样的
请大家帮详细的讲解一下,迷惑中------ (最后弄个流程图更直观)