haiouda 发表于 2015-3-23 19:00:43

递归归去来兮,这样用应该不算是递归吧?

本帖最后由 haiouda 于 2015-3-23 19:06 编辑

/********************************************************************
有 n 个整数,使前面各数顺序向后移 m 个位置,最后 m 个数变成最前面 m
个数。写一函数实现以上功能,在主函数中输入 n 个整数和输出调整后的 n
个数。
*********************************************************************/

#if(1)
#include <stdio.h>
int main()
{
      void move(int ,int,int);
      int number,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);
      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);
      printf("\n");
      return 0;
}


#if(0)
void move(int array,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,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这样用,不算递归吧(只有其形没有其实!)?      


递归:递归归去来兮!



页: [1]
查看完整版本: 递归归去来兮,这样用应该不算是递归吧?