我没有找到任何具有我的功能的具体需求来做这件事,是的,这是为了做作业.
所以我有:
public void reverseArray(int[] x) {
}
Run Code Online (Sandbox Code Playgroud)
前提条件:x.length> 0
事实上,我不能让函数返回任何东西,唯一的参数是数组让我感到难过.
我已尝试使用循环和递归,但我尝试过的所有内容似乎最终都会产生无限的函数实例.
我已经有了一个想法/建议使用另一个功能以及这一个,但是,如何递归使用原始目标超出了我的目前.
任何帮助表示赞赏.
出于好奇而编写递归字符串反向函数,但在那里有一些XOR问题.这个函数的重点是不使用迭代器,这就是它是递归函数的原因.这不是功课,只是好奇心.
private static char[] ReverseNL(char[] arr, int index)
{
var len = arr.Length;
if (index > 0)
arr[len - index] ^= arr[index - 1];
return index-- < 1 ? arr : ReverseNL(arr, index);
}
Run Code Online (Sandbox Code Playgroud)
它似乎堵塞了我的字符串的第一部分
"嘿那里堆叠!" 成为"我♫→A←E↨rehtyeh"
它总是被混乱的短语的前半部分......
UPDATE ..
我想这里并不真正需要XOR ..所以使用了基本的任务,也摆脱了回归.
private static void ReverseNL(char[] arr, int index) {
var len = arr.Length;
if (index > 0 && index > len / 2) {
var c = arr[len - index];
arr[len - index] = arr[index - 1];
arr[index - …Run Code Online (Sandbox Code Playgroud) 我必须使用递归来解决这个问题,我设法让它很快就能使用循环,但是我有点困惑于此.我目前的代码是
public static String ReverseR(String n){
String finalstring="";
int i = 0;
int len = n.length();
while (i < len) {
finalstring += (n.charAt(len - 1));
ReverseR(n.substring(0, len - 1));
i++;
}
return finalstring;
}
Run Code Online (Sandbox Code Playgroud)
当我输入任何字符串时,结果字符串的长度是正确的,但只使用最后一个字母.例:ReverseR("你好")= ooooo有什么想法吗?
我正在尝试在Java中反转完整字符串
例如,Good morning因此输出应返回morning good。
我尝试了以下功能
public static String reverse(String s)
{
if (s.isEmpty())
return s;
//int n = 0;
return reverse(s.substring(1)) + s.charAt(0);
}
Run Code Online (Sandbox Code Playgroud)
但是上述功能正在转换good morning为gninrom doog。我的代码适用于每个字符,如何使其适用于文字。任何提示或指南/解释将不胜感激。
我已经去过这个问题,但没有解决我的问题
更新:
在@snr答案和@NathanHughes注释的帮助下尝试以下代码
public static String reverse(String s)
{
int s1 = s.indexOf(" ");
if (s1 != -1)
{
return reverse(s.substring(s1+1)) + s.substring(0,s1);
}
else
{
return "-1";
}
}
Run Code Online (Sandbox Code Playgroud)
但是输出是
-1good
Run Code Online (Sandbox Code Playgroud)