
正文
java递归代码怎么写 java递归讲解
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用java编写递归程序,编写程序,给定整数n,求该整数的划分数,要求避免重复运算,以提高程序执行效率。
求整数的划分数程序:
import java.util.Scanner;
public class I {
static int d[]=new int[32];
static int input;
public static void main(String[] args) {
System.out.println("请输入(1-32)的整数:");
Scanner sc=new Scanner(System.in);
input=sc.nextInt();
if (input=1 input=32) {
decompose(input, input, 0);
}
}
static void decompose(int m, int n,int k){
int i;
if (m == 0) {
System.out.print(input+"=");
System.out.print(d[0]);
for (i=1; ik; i++)
System.out.print("+"+d[i]);
System.out.println();
}
for (i=(mn?m:n); i0; i--) {
if (i n)
d[k] = i;
else
d[k] = n;
decompose(m-d[k], d[k], k+1);
}
}
}
运行结果:
请输入(1-32)的整数:
7
7=7
7=6+1
7=5+2
7=5+1+1
7=4+3
7=4+2+1
7=4+1+1+1
7=3+3+1
7=3+2+2
7=3+2+1+1
7=3+1+1+1+1
7=2+2+2+1
7=2+2+1+1+1
7=2+1+1+1+1+1
7=1+1+1+1+1+1+1
相关问答
Q1: 1.用递归方法编写:用java语言写!
删除不好做,因为你是一个文件内容的删除。
可以用字符串数组来保存每一行的值,删除了之后,再重新保存进去。
可以这样做:比如说你的文件路径:c:/a.txt
1.File file = new File("c:/a.txt");
2.BufferedReader reader = new BufferedReader(file);
3.byte[] strValue = new byte[(int)file.length()];
4.String str = reader.read(strValue);//按文件大小一次读入
5.String rows = str.split("\r\n");//按换行符拆分,即数组的每一条,对应文件每一行的内容。
6.如果要删除按条件删除某一行,只需要判断字符串数组是否存在这一行了,如果存在,替换为“”即可。
7.Writer writer = new FileWriter(file);
8.
for(int i=0;irows.length;i++){
writer.write(rows[i]);
}
只是分析了一下,具体步骤还是你来完成了。。
RandomAccessFile raf = new RandomAccess("wenjian.txt");
char ch[] = new char[3];
char to[] = {'s','s','x'};
boolean get = false;
while(get){
raf.readChars(ch);
if(ch[0]=='d' ch[1]=='d' ch[2]=='s'){
get = true;
}
}
raf.seek(raf.getFilePointer() -6 );
raf.writeChars(to);
这个代码就是把wenjian.txt中出现的第一个dds修改成ssx。
Q2: 用Java编写一个完整的递归程序,实现如下功能:从键盘输入数字n,程序自动计算n!,并输出
public static void main(String[] args){
System.out.println("输入n,按回车java递归代码怎么写:");
Scanner s = new Scanner(System.in);
Integer n = Integer.parseInt(s.next());
Integer re = factorial(1, n);
System.out.println(re);
}
public static Integer factorial(Integer a, Integer b){
if(b == 1){
return a * b;
}else{
return a * b * factorial(a, b-1);
}
}
这个最后吐槽一句,用循环一下就解决java递归代码怎么写了,非要用递归,闲得蛋疼
Q3: 什么是递归,用Java怎么实现?
递归就是自身调用自身,通过下面函数可以实现1+...+n;
public static int calculate(int n){
if(i==1){
return 1;
}else{
return n+calculate(n-1);
}
}
Q4: 求Java递归深入理解,比如循环里面写递归怎么写? 求详细教程?
递归实际上就是函数调用自己本身。
比如算一个整数的阶乘。传入参数4,求出4*3*2*1结果。代码如下:
public static int jiechen(int i)
{
if(i = 1)
{
return 1;
}
else
{
return i*jiechen(i-1);
}
}
在这个函数中反复调用本身。
因为
jiechen(4) = 4*jiechen(3)
jiechen(3)=3*jiechen(2)
.....
递归的效率实际上并不高,不在不得已的情况下尽量不要递归
java递归代码怎么写的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java递归讲解、java递归代码怎么写的信息别忘了在本站进行查找喔。






