马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 haiouda 于 2015-3-23 19:06 编辑 /********************************************************************
有 n 个整数,使前面各数顺序向后移 m 个位置,最后 m 个数变成最前面 m
个数。写一函数实现以上功能,在主函数中输入 n 个整数和输出调整后的 n
个数。
*********************************************************************/
#if(1)
#include <stdio.h>
int main()
{
void move(int [20],int,int);
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 move?");
scanf("%d",&m);
move(number,n,m);
printf("Now,they are:\n");
for (i=0;i<n;i++)
printf("%d",number[i]);
printf("\n");
return 0;
}
#if(0)
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);
}
#endif
#if(1)
void move(int array[20],int n,int m)
{
int *p,array_end;
for (m;m>0;m--)
{
array_end=*(array+n-1);
for (p=array+n-1; p>array; p--) *p=*(p-1);
*array=array_end;
}
}
#endif
#endif
递归:归去来兮!
上面第29行到60行 有二个 #if() #endif 我把第二个 #if() #endif 用循环语句替代
第一个 #if() #endif 这样用,不算递归吧(只有其形没有其实!)?
递归:递归归去来兮!
|