给定一个字符数组: 1、倒序打印这个数组 2、反转这个数组
对于需求1递归到最后,直接打印当前的下标即可。
static void reservePrint(char[] s
,int start
)
{
if(start
==s
.length
)
return;
reservePrint(s
,start
+1);
System
.out
.println(s
[start
]);
}
对于需求2如果按我的递归思路来,就是:把当前下标后面的全部反转好,然后把当前下标插入最后一位,其他人往前挪挪。这样的结果是要挪的东西太多了。 但是这种基于分治的递归,时间复杂度为n.
static void reserveArray(char[] s
,int start
,int end
)
{
if(start
>=end
)
{
return;
}
char temp
=s
[start
];
s
[start
]=s
[end
];
s
[end
]=temp
;
reserveArray(s
,start
+1,end
-1);
}