题目描述:
将一个句子的单词逆序输出来:
输入:I am a boy!(用一个空格间隔这些单词)
输出:boy! a am I
=============================================================
对于这个问题,我们可以用递归来实现,如,当输入为I am a boy!的时候其等价于am a boy!先逆序,再输出单词I.因此,
using System;
namespace LilacFlower
{
class Program
{
/// <summary>
/// 将一个句子逆序输出
/// </summary>
/// <param name="data">需要逆序的句子</param>
/// <param name="start">开始的位置</param>
private static void Reverse(char[] data, int start)
{
if (start >= data.Length)
{
return;
}
// 找到第一个空格位置
var begin = start;
while (begin < data.Length && data[begin++] != ' ') ;
// 递归后面的句子
Reverse(data, begin);
//输出从start开始的单词
while (start < data.Length && data[start] != ' ')
{
Console.Write(data[start++]);
}
Console.Write(" ");
}
static void Main(string[] args)
{
Reverse("I am a boy!".ToCharArray(), 0);
}
}
}
运行结果: