|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 这样用,不算递归吧(只有其形没有其实!)?
递归:递归归去来兮!
|
|