题目:
请用程序分别实现递和归迭代算法。
答:
== 递归 ==
/**
*
*/
package com.test;
/**
* @author daniel
*
*/
public class CallSelf {
/**
* @param args
*/
public static void main(String[] args) {
// int
int number=4;
// call sum
System.out.println( "sum("+number+ ")="+sum(number));
// call getFactorial
System.out.println( "getFactorial("+number+ ")="+getFactorial(number));
}
/**
* sum up an number to 1
* @param x
* @return
*/
public static int sum( int x){
//break
if(x<=0){
return x;
}
//call self & sum up
int total=x+sum(x-1);
return total;
}
public static int getFactorial( int x){
//condition
if(x==1){
return 1;
}
//call self & get factorical
return x*getFactorial(x-1);
}
}
*
*/
package com.test;
/**
* @author daniel
*
*/
public class CallSelf {
/**
* @param args
*/
public static void main(String[] args) {
// int
int number=4;
// call sum
System.out.println( "sum("+number+ ")="+sum(number));
// call getFactorial
System.out.println( "getFactorial("+number+ ")="+getFactorial(number));
}
/**
* sum up an number to 1
* @param x
* @return
*/
public static int sum( int x){
//break
if(x<=0){
return x;
}
//call self & sum up
int total=x+sum(x-1);
return total;
}
public static int getFactorial( int x){
//condition
if(x==1){
return 1;
}
//call self & get factorical
return x*getFactorial(x-1);
}
}
== 迭代 ==
/*
* 斐波那契方法 采用迭代方法解决
* @param n 要求的那项位置
* @return 结果
*/
public static int feibo( int n)
{
int start1 = 1;
int start2 = 1;
for( int i = 2; i < n; i++)
{
int temp = start1+start2;
start1 = start2;
start2 = temp;
}
return start2;
}
* 斐波那契方法 采用迭代方法解决
* @param n 要求的那项位置
* @return 结果
*/
public static int feibo( int n)
{
int start1 = 1;
int start2 = 1;
for( int i = 2; i < n; i++)
{
int temp = start1+start2;
start1 = start2;
start2 = temp;
}
return start2;
}
转载于:https://blog.51cto.com/danni505/203648