2、递归算法一般用于解决三类问题:
1)数据的定义是按递归定义的。(Fibonacci(斐波那契)的函数)
2)问题解法按递归算法实现。(回溯)
3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)import javautilScanner;
class Example
{
/递归方法/
public long square(int n)
{
if (0 == n)//递归的出口
{
return 0;
}
else
{
return square(n-1) + 2n - 1;
}
}
/输入数据n的方法/
public int scan()
{
int number = 0;
Scanner scan = null;
while(true)
{
Systemoutprint("请输入 n 的值:");
try{
scan = new Scanner(Systemin);
number = scannextInt();
break;
}catch(Exception e)
{
Systemoutprintln("你输入的数据n 错误!");
Systemoutprintln("请重新输入");
}
}
return number;
}
public boolean isContinue ()
{
String src = null;
Scanner scan = null;
while(true){
Systemoutprint("是否还需要继续计算?y(yes)/n(no) : ");
scan = new Scanner(Systemin);
src = scannextLine();
if(srcequalsIgnoreCase("y") || srcequalsIgnoreCase("yes"))
{
return true;
}
else if(srcequalsIgnoreCase("n") || srcequalsIgnoreCase("no"))
{
return false;
}
}
}
public static void main(String[] args)
{
int number = 0;
Example exam = null;
do{
exam = new Example();
number = examscan();
long result = examsquare(number);
Systemoutprintln("square(" + number + ") = " + result);
}while(examisContinue());
}
}递归实际上就是函数调用自己本身。
比如算一个整数的阶乘。传入参数4,求出4321结果。代码如下:
public static int jiechen(int i)
{
if(i <= 1)
{
return 1;
}
else
{
return ijiechen(i-1);
}
}
在这个函数中反复调用本身。
因为
jiechen(4) = 4jiechen(3)
jiechen(3)=3jiechen(2)
递归的效率实际上并不高,不在不得已的情况下尽量不要递归public class bb
{
public static void main(String args[])
{
Systemoutprintln(getpower(2,10));
}
public static int getpower(int x,int y)//此为您要的递归方法
{
if(y==0)
return 1;
else if(y==1)
return x;
else return xgetpower(x,y-1);
}
}String[] str = {"a", "b", "c", "d", "e"};
if (index == 0 || index == strlength - 1) {
Systemoutprint(str[index]);
return str[index];
} else {
Systemoutprint(str[index]);
return printItem(index + 1);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)