黑马程序员技术交流社区
标题:
怎么使用递归,使数组倒序输出?
[打印本页]
作者:
hehe04
时间:
2012-8-30 09:14
标题:
怎么使用递归,使数组倒序输出?
今天看了一个面试题,要求使用递归的方法,使数组翻转 。例如 {1,2,3,4,5,6}变成{6,5,4,3,2,1}
作者:
许庭洲
时间:
2012-8-30 09:59
本帖最后由 许庭洲 于 2012-8-30 10:01 编辑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 数组翻转
{
calss Program
{
static void Main(string[] args)
{
int[] num = new int[]{1,2,3,4,5,6}; //初始化数组
intReverse(num);//调用翻转函数
Console.WriteLine("数组翻转后的结果:");
for(int i=0;i<num .Length;i++)//挨个输出翻转后的元素
{
Console.Write(num +" ");
}
Console.WriteLine();
}
static string intReverse(int[] a)
{
if (a.Length == 1)
return a;
else
return a.Substring(a.Length - 1, 1) +
stringReverse(a.Substring(0, a.Length - 1)
);//蓝色部分采用了递归方法进行数组翻转
}
}
}
作者:
资建文
时间:
2012-8-30 17:48
学习了!
作者:
黑马杨凯
时间:
2012-8-31 23:51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 递归反转数组
{
class Program
{
static void Main(string[] args)
{
int[] nums = { 1, 2, 5, 34, 7, 51 };//初始int数组
ReverseArray(nums, 0,nums.Length-1);//调用反转函数
//输出结果
foreach (int i in nums)
{
Console.Write(i + " ");
}
Console.ReadKey();
}
/// <summary>
/// ReverseArray()反转int[]数组
/// </summary>
/// <param name="nums"></param>
/// <param name="startIndex">startIndex是int[]的你要反转的部分的起始索引</param>
/// <param name="endIndex">endIndex是int[]的你要反转的部分的终止索引</param>
public static void ReverseArray(int[] nums,int startIndex,int endIndex)
{
if (startIndex >= endIndex)
{
return;
}
int temp = nums[startIndex];
nums[startIndex] = nums[endIndex];
nums[endIndex] = temp;
ReverseArray(nums, startIndex + 1, endIndex - 1);//递归调用
}
}
}
这样也可以
作者:
尤洋
时间:
2012-9-1 09:00
本帖最后由 尤洋 于 2012-9-1 09:01 编辑
//发个代码短一点的
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={1,2,3,4,5};
print(arr.length-1,arr);
}
public static void print(int j,int[]arr)
{
System.out.println(arr[j]);
if((j-1)>=0)
print(j-1,arr);//方法中再次调用方法
}
复制代码
作者:
张文
时间:
2012-9-1 22:20
数组本来就带返转方法的,递归用多了不好。
static void Main(string[] args)
{
Console.WriteLine(stringReverse("abcdef"));
}
static string stringReverse(string s)
{
if (s.Length == 1)
return s;
else
return s.Substring(s.Length - 1, 1) + stringReverse(s.Substring(0, s.Length - 1));
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2