正文
java中递归公式代码 java 递归方法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
java用递归算法求 1-2+3-4+5-6......+
思路:先用递归求出一个数的阶乘,接着for循环累加求和。参考代码:pre t="code" l="cpp"#includestdio.h
int fun(int n){
if(n==1) return 1;//递归结束条件
return n*fun(n-1);//递归式
}
int main()
{
int sum=0,i;
for(i=1;i=6;i++)//for循环累加求和
sum+=fun(i);
printf("%d\n",sum);
return 0;
}
/*
运行结果:
873
*/
JAVA利用递归公式求解
源代码如下:
******************************************************************
import java.io.*;
import java.lang.String;
public class RecursionCal {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入要计算的数列的长度然后回车:(n=0的时候请输入1,以此类推)");
int length = Integer.parseInt(br.readLine().trim());
long[] a = new long[length];
long sum;//和
if (length == 1) {
a[0] = 2;
sum = a[0];
} else if (length == 2) {
a[0] = 2;
a[1] = 3;
sum = a[0] + a[1];
} else {
a[0] = 2;
a[1] = 3;
sum = a[0] + a[1];
for (int i = 2; i length; i++) {
a[i] = 5 * a[i - 1] + 3 * a[i - 2];
sum += a[i];
}
}
System.out.println("该数列第" + length + "个元素a" + length + "的值为" + a[length-1]);
System.out.println("该数列前" + (length+1) + "个元素之和s" + length + "的值为" + sum);
}
}
*****************************************************************
操作步骤:
1、点击开始,运行,输入"notepad"后回车打开记事本;
2、把源代码(*中的部分)粘贴进去保存,选择保存类型为所有文件,取名为RecursionCal.java,放在d盘根目录下;
2、点击开始,运行,输入"cmd"后回车,进入命令行窗口;
3、在命令行窗口中输入"d:"后回车,然后输入"javac RecursionCal.java",这时可以看到在d盘下生成一个同名的class文件,然后输入"java RecursionCal",按照提示操作就行;
注:输入数字不要过大(不要超过30),否则会发生溢出(得到的结果为负数)!
以上代码系本人原创,经过本人编译调试通过,验证无误,解答完毕,请给分!
一个java的递归调用的代码,希望大家可以帮帮我。谢谢!
感觉你的基本概念不清楚,建议你从头认真看下JAVA的一些基本概念。
针对你提的问题解答如下:
calc(int n)是一个方法
System.out.println("10的阶乘为:"+calc(10)); 中的calc(10)表示调用calc方法,同时将10传递给方法的形参n,这样n=10(这个表示等于,相当于程序中的==,下同).
而在calc()方法内部,是说如果n=1,方法就返回结果1,如果不等于就返回n * calc(n-1)。而这个时候的calc(n-1)又再一次调用calc方法,同时将n-1传递给方法的形参n,这样n=9
如此循环调用,直到最后一次n=1时方法直接返回1.
所以calc()方法求的是n的阶乘,也就是n*(n-1)*(n-2)*...*2*1
一段JAVA的递归代码
下面递归写java中递归公式代码了一段递归累加到100java中递归公式代码,每加20个就换行输出。
package zhidao;
public class Digui {
public static int add(int num){
int sum = 0;
StringBuffer sb = new StringBuffer();
if (num = 0) {
return 0;
}else{
if (num == 1) {
sum = sum+1;
}else {
sum = add(num-1)+num;
}
if (num % 20 == 0) {
System.out.println("[index = "+num+" sum = "+sum+"]");
}else {
System.out.print("[index = "+num+" sum = "+sum+"],");
}
}
return sum;
}
public static void main(String[] args) {
add(100);
}
}
java中递归算法是什么怎么算的?
一、递归算法基本思路:
Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题java中递归公式代码,然后递归调用方法表示问题的解。递归往往能给java中递归公式代码我们带来非常简洁非常直观的代码形式java中递归公式代码,从而使java中递归公式代码我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。
二、递归算法解决问题的特点:
【1】递归就是方法里调用自身。
【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟java中递归公式代码了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。
三、代码示例:
public class Factorial {
//this is a recursive function
int fact(int n){
if (n==1) return 1;
return fact(n-1)*n;
}
}
public class TestFactorial {
public static void main(String[] args) {
// TODO Auto-generated method stub
Factorial factorial=new Factorial();
System.out.println("factorial(5)="+factorial.fact(5));
}
}
代码执行流程图如下:
此程序中n=5就是程序的出口。
java递归算法
1.汉诺塔问题
import javax.swing.JOptionPane;
public class Hanoi {
private static final String DISK_B = "diskB";
private static final String DISK_C = "diskC";
private static final String DISK_A = "diskA";
static String from=DISK_A;
static String to=DISK_C;
static String mid=DISK_B;
public static void main(String[] args) {
String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");
int num=Integer.parseInt(input);
move(num,from,mid,to);
}
private static void move(int num, String from2, String mid2, String to2) {
if(num==1){
System.out.println("move disk 1 from "+from2+" to "+to2);
}
else {
move(num-1,from2,to2,mid2);
System.out.println("move disk "+num+" from "+from2+" to "+to2);
move(num-1,mid2,from2,to2);
}
}
}
2. 这是一个排列java中递归公式代码的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如java中递归公式代码:你给出的参数是"abc" 则程序会输出:
abc
acb
bac
bca
cab
cba
(1)算法的出口在于:low=high也就是现在给出的排列元素只有一个时。
(2)算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素,
然后low+1开始减少排列元素,如此下去,直到low=high
public static void permute(String str) {
char[] strArray = str.toCharArray();
permute(strArray, 0, strArray.length - 1);
}
public static void permute(char[] list, int low, int high) {
int i;
if (low == high) {
String cout = "";
for (i = 0; i = high; i++)
cout += list[i];
System.out.println(cout);
} else {
for (i = low; i = high; i++) {
char temp = list[low];
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);
temp = list[low];
list[low] = list[i];
list[i] = temp;
}
}
}
3。这是一个组合的例子,与上述的例子相似,只是它所做的工作是,输出所给字符串中制定数目的元素的组合种类
(1)程序出口在于n=1,此时只要输出目标数组的所有元素即可
(2)逼近过程,当n1 的时候,我们先取第一个元素放入目标数组中,然后n-1,如此下去,最后出来。
import javax.swing.JOptionPane;
public class Combination {
/**
* @param args
*/
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("please input your String: ");
String numString = JOptionPane.showInputDialog("please input the number of your Combination: ");
int num = Integer.parseInt(numString);
Combine(input, num);
}
private static void Combine(String input, int num) {
char[] a = input.toCharArray();
String b = "";
Combine(a, num, b, 0, a.length);
}
private static void Combine(char[] a, int num, String b, int low, int high) {
if (num == 0) {
System.out.println(b);
} else {
for (int i = low; i a.length; i++) {
b += a[i];
Combine(a, num - 1, b, i+1, a.length);
b=b.substring(0, b.length()-1);
}
}
}
}
关于java中递归公式代码和java 递归方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。