大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、采用自顶向上的递归方法,代码如下:
创新互联建站于2013年开始,是专业互联网技术服务公司,拥有项目网站建设、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元海州做网站,已为上家服务,为海州各地企业和个人服务,联系电话:18982081108
import java.util.Scanner;
public class Test {
@SuppressWarnings("resource")
public static void main(String[] args) {
// 从控制台输入一个整数
Scanner in = new Scanner(System.in);
int b = in.nextInt();
// 声明一个Test对象,调用cal方法获得结果
Test test = new Test();
long a = test.cal(b);
System.out.println(a);
}
// 通过递归掉调用最终返回结果
public long cal(int number) {
// 如果数字为1,则直接返回
if (number == 1) {
return 1;
} else {// 否则递归求值
return number * cal(number - 1);
}
}
}
2、递归方法:
递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).
3、特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
arrs[100000][100000];
a[100000];
f(i,zhi){
if(i==4){
arrs[]=a;
return;
}
a[i]=zhi;
f(i+1,zhi+3);
f(i+1,zhi+4);
}
f(0,0)
arrs就是结果,并且是排了序的。
publicclassDigui{//递归算法:publicstaticdoubledigui(intn){doublesum=0.0;if(n==1){sum=1;}else{if(n%2==0){sum=1.0/n+digui(n-1);}else{sum=-1.0/n+digui(n-1);}}returnsum;}//非递归算法:publicstaticdoublefeidigui(intn){doublecount=0.0;StringBuffersb=newStringBuffer();for(doublei=1;i=n;i++){if(i==1){count=1;sb.append("n!="+n+"!=1");}else{if(i%2==0){count=count+1/i;sb.append("+1/"+(int)i);}else{count=count-1/i;sb.append("-1/"+(int)i);}}}System.err.println(sb.toString());returncount;}publicstaticvoidmain(String[]args){intn=10;doubledigui=feidigui(n);doublefeidigui=digui(n);System.out.println("递归算法:"+n+"!="+digui);System.out.println("非递归算法:"+n+"!="+feidigui);}}运行结果如下:n!=10!=1+1/2-1/3+1/4-1/5+1/6-1/7+1/8-1/9+1/10递归算法:10!=1.3543650793650797非递归算法:10!=1.3543650793650797
伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 介于自然语言与编程语言之间。以编程语言的书写形式指明算法职能。使用伪代码, 不用拘泥于具体实现。相比程序语言(例如Java, C++,C, Dephi 等等)它更类似自然语言。它是半角式化、不标准的语言。可以将整个算法运行过程的结构用接近自然语言的形式(可以使用任何一种你熟悉的文字,关键是把程序的意思表达出来)描述出来。
String path = "***"
File f = new File(path);
public void test (F f)
File []fs = f遍历文件夹;
for(...){
if(fs[i]是文件){
输入
}else{
递归test(fs[i]);
}
}