一、java版
1.普通倒序
<pre name="code" class="java">class converse
{
private static int x=0;
private static int top=0;
private static char[] ch1=new char[512];;
public static void main(String[] args)
{
String str="abcdfgh";
converse_1(str);
}
public static void converse_1(String str)
{
char[] ch=str.toCharArray();
for (int i=ch.length-1;i>=0 ;i-- )
{
System.out.print(ch[i]);
}
}
}
2.堆棧倒敘
class converse
{
private static int x=0;
private static int top=0;
private static char[] ch1=new char[512];;
public static void main(String[] args)
{
converse_2();
}
//利用入棧出棧
public static void converse_2()
{
char[] ch={'a','b','c'};
int x=0;
int j=0;
while (x<ch.length)
{
pop(ch[x]);
x++;
}
System.out.println("長度:"+ch1.length);
while (ch1[j]!='\0')
{
pup();
j++;
}
}
public static void pop(char c)
{
ch1[top++]=c;
}
public static void pup()
{
System.out.println(" "+ch1[--top]);
}
}
3.利用遞歸倒敘
class converse
{
private static int x=0;
private static int top=0;
private static char[] ch1=new char[512];;
public static void main(String[] args)
{
reverseString("abcdg");
}
public static void reverseString(String str) {
if(str.length() == 1) {
System.out.print(str); //abc
} else {
String str1 = str.substring(0,str.length()-1); //str1=abc
System.out.println("str1:"+str1);
String str2 = str.substring(str.length()-1);//str2=c
System.out.println(str2);//打印出c
reverseString(str1);//執行下一個循環
}
}
}
二、C語言版 遞歸倒敘 注意和java的區別
#include <stdio.h>
#define LEN 3
char buf[LEN]={'a','b','c'};
void reverseString(int pos)
{
if (pos==len)
return ;
reverseString(pos+1);
putchar(buf[pos]);
}
void main()
{
reverseString(0);
putchar('\n');
}
注意若將main中的函數改爲reverseString(1);則打印出b c