数组向左旋转(递归)

根纳罗·马可·德文森兹(Gennaro Marco Devincenzis)

免责声明:这是一种练习,但不是作业。

现在,我们开始。练习要求将通用数组向左旋转,将第一个元素放在最后一个位置,然后递归进行。我的想法:

这是我写的正确的轮换:

 void moveArrayRight (int array[], int dim){
            if(dim!=1){
                int holder;
                holder = array[dim-1];
                array[dim-1]=array[dim-2];
                array[dim-2]=holder;
                moveArrayRight(array, dim-1);
            }
 }

问题是:我不能(我认为)对左手使用相同的技术。可以添加另一个参数(从技术上讲,我可以使用任何我想使用的参数),但是我对此深深地不喜欢。如果可能的话,我只想保留两个参数。我还想做一些类似的事情,例如使用数组的最后一个元素存储下一个单元格中要存储的内容,但是我主要由于以下原因不知道如何实现它:我不知道如何保留原始元素数组的维数。

有什么想法,提示或类似的东西吗?

来自莫斯科的弗拉德
void rotate_left( int a[], size_t n )
{
   if ( n > 1 )
   {
      int tmp = a[0];
      a[0] = a[1];
      a[1] = tmp;
      rotate_left( a + 1, n - 1 );
   }
}

这是函数用法的一个例子

#include <stdio.h>

void rotate_left( int a[], size_t n )
{
    if ( n > 1 )
    {
        int tmp = a[0];
        a[0] = a[1];
        a[1] = tmp;
        rotate_left( a + 1, n - 1 );
    }
}

int main( void ) 
{
    int a[] = { 1, 2, 3, 4, 5 };

    for ( size_t i = 0; i < sizeof( a ) / sizeof( *a ); i++ ) printf( "%d ", a[i] );
    puts( "" );

    rotate_left( a, 5 );

    for ( size_t i = 0; i < sizeof( a ) / sizeof( *a ); i++ ) printf( "%d ", a[i] );
    puts( "" );

    return 0;
}

输出是

1 2 3 4 5 
2 3 4 5 1 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组向左旋转(递归)

来自分类Dev

PHP在PHP中向左旋转数组

来自分类Dev

数组修改[左旋转]

来自分类Dev

在C ++中向左旋转x位

来自分类Dev

向左旋转“ X” 4位

来自分类Dev

xrandr向左旋转右失败

来自分类Dev

是什么使数组在没有温度的情况下向左旋转?

来自分类Dev

数组元素在 C# 中向左旋转 - 不受欢迎的输出

来自分类Dev

将数组的所有元素向左旋转“ k”位置,但我的代码将其向右移动

来自分类Dev

iOS相机输出向左旋转90度

来自分类Dev

C:二进制向左旋转

来自分类Dev

二叉搜索树向左旋转

来自分类Dev

iOS相机输出向左旋转90度

来自分类Dev

LL旋转是单向左旋转还是单向右旋转?

来自分类Dev

在Jquery或Jquery Mobile中向左滑动即可向左旋转图像

来自分类Dev

Java-Chars可以向左旋转但不能向右旋转?

来自分类Dev

Java-Chars可以向左旋转但不能向右旋转?

来自分类Dev

Xcode iPhone模拟器中“向左旋转”的击键到底是什么?

来自分类Dev

编码为Base64后,图像向左旋转90度

来自分类Dev

数字立方体,每行向左旋转一位

来自分类Dev

在具有4个字段的bst中向左旋转

来自分类Dev

左旋转 BigInteger?

来自分类Dev

如何左旋转整数的位

来自分类Dev

旋转整数数组的递归方法分析

来自分类Dev

以o(n)复杂度向左或向右旋转数组一定数量的位置

来自分类Dev

圆滑的旋转木马向左箭头隐藏

来自分类Dev

数组的旋转

来自分类Dev

Elixir中的左旋转按位操作/为什么缺少签名的左移?

来自分类Dev

数组递归