java用递归算法求 1-2+3-4+5-6......+

Python022

java用递归算法求 1-2+3-4+5-6......+,第1张

思路:先用递归求出一个数的阶乘,接着for循环累加求和。参考代码:

#include

int

fun(int

n){

if(n==1)

return

1//递归结束条件

return

n*fun(n-1)//递归式

}

int

main()

{

int

sum=0,i

for(i=1i<=6i++)//for循环累加求和

sum+=fun(i)

printf("%d\n",sum)

return

0

}

/*

运行结果:

873

*/

评论

0

0

加载更多

Java程序:

public class Main {

public static void main(String[] args){

System.out.println(sum(2, 5))

}

public static int sum(int n1, int n2) {

if(n1 == n2) {

return n1

}

if(n1 >  n2) {

int temp = n1

n1 = n2

n2 = temp

}

return sum(n1, n2-1) + n2

}

}

运行测试

14

import java.util.ArrayList

import java.util.List

public class Fraction {

private int molecular//分子

private int assignment//分母

//get set方法

public int getMolecular() {

return molecular

}

public void setMolecular(int molecular) {

this.molecular = molecular

}

public int getAssignment() {

return assignment

}

public void setAssignment(int assignment) {

this.assignment = assignment

}

//构造函数

public Fraction(int fenzi,int fenmu){

//怕输入的分母为0 所有在这里测试一下 如果输入为0 那么会抛出一个异常

int test=1/fenmu

molecular=fenzi

assignment=fenmu

}

//两个分数相加

public String add(Fraction b){

this.molecular=this.molecular*b.assignment+b.molecular*this.assignment

this.assignment=this.assignment*b.assignment

return this.toString()

}

//分数化简

public Fraction anonym(){

int small//记录相当小的数

int big//记录相对大的数

if(molecular>assignment){

small=assignment

big=molecular

}else{

small=molecular

big=assignment

}

//得到相对小的数的所有约数

List<Integer>list=new ArrayList<Integer>()

for(int i=2i<=small/2i++){

if(small%i==0){

list.add(i)

}

}

//判断是否是公约数 并做操作

if(list.size()>0){

for(int i=list.size()-1i>=0i--){

if(big%list.get(i)==0&&small%list.get(i)==0){

big=big/list.get(i)

small=small/list.get(i)

molecular=molecular/list.get(i)

assignment=assignment/list.get(i)

}

}

}

return this

}

//重写toString方法

@Override

public String toString() {

this.anonym()

if(this.molecular%this.assignment==0){

return ""+this.molecular/this.assignment

}else{

return ""+this.molecular+"/"+this.assignment

}

}

//主方法 用于测试

public static void main(String[] args) {

Fraction f1=new Fraction(6,14)

Fraction f2=new Fraction(7,15)

System.out.println(f1.add(f2))

}

}

我刚写的 我测试没什么问题 你测试一下吧 我只定义了一个加法 减法乘法除法不用我给你写了吧 如果有问题找我 QQ253358046 我这个不是用递归算的 但是能实现 如果非要用递归再找我吧