Duvida sobre recursividade [resolvido]

6 respostas
A

Olá, caros colegas.

Gostaria de tirar uma dúvida, estou tentando montar uma recursiva dessa sequência.

:frowning: Agradeço a quem puder ajudar.

S = 1/n + 2/n-1 + 3/n-2 + … + n-1/2 + n/1

Até tentei algo, mas realmente não sei onde estou errando.

import java.util.*;
public class Exemplo {

	/**
	 * @param args
	 */
	static double num;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner dd = new Scanner(System.in);
		System.out.println("Digite um número");
		num = dd.nextDouble();
		System.out.println("");
		System.out.println("Resultado = " + recEx(num));
	}

	public static double recEx(double n){
		double s=0.0, sx = 0.0;
		if ((int)n>=1){
			sx = (n-1)/((n-1) -((n-1)-1)) + (n-1)-n/(n-1); 
			s = s + sx;
				
			recEx(sx);
			
		}
		
		return s;
	}
}

6 Respostas

luxu

Exemplo tah na linguagem pascal, mas v se clareia as ideias

Function Fib(n:integer):Integer;
Begin
         If (n=1) or (n=0)
            then Fib:=1
            else Fib:=Fib(n-2) + Fib(n-1);
End;

var n:integer;
Begin
     clrscr;
     write('Digite o FIBONACCI desejado:');readln(n);
     writeln(Fib(n));
     readkey;
End.
dobau

Isso ajuda ?

public static double recEx(double a, double b) {
	    if (b <= 1) {
	        return a;
	    } else {
	        return a/b + recEx(a + 1, b - 1);
	    }
	}

	public static double recEx(double n){
	    return recEx(1, n);
	}
juno.rr

Olá,

tenta assim, acho que funciona:

public double recEx(double inc, double n, double sum) {
    if(dec == 1) return sum;
    sum += ++inc / n--;
    System.out.println(sum + " += " + inc + " / " + n);
    return recEx(inc, n, sum);
  }

Olha a saída:

recEx(0, 10, 0);

0.1 += 1.0 / 9.0
0.3222222222222222 += 2.0 / 8.0
0.6972222222222222 += 3.0 / 7.0
1.2686507936507936 += 4.0 / 6.0
2.101984126984127 += 5.0 / 5.0
3.3019841269841272 += 6.0 / 4.0
5.051984126984127 += 7.0 / 3.0
7.718650793650793 += 8.0 / 2.0
12.218650793650793 += 9.0 / 1.0
12.218650793650793
A

juno.rr:
Olá,

tenta assim, acho que funciona:

public double recEx(double inc, double n, double sum) {
    if(dec == 1) return sum;
    sum += ++inc / n--;
    System.out.println(sum + " += " + inc + " / " + n);
    return recEx(inc, n, sum);
  }

Olha a saída:

recEx(0, 10, 0);

0.1 += 1.0 / 9.0
0.3222222222222222 += 2.0 / 8.0
0.6972222222222222 += 3.0 / 7.0
1.2686507936507936 += 4.0 / 6.0
2.101984126984127 += 5.0 / 5.0
3.3019841269841272 += 6.0 / 4.0
5.051984126984127 += 7.0 / 3.0
7.718650793650793 += 8.0 / 2.0
12.218650793650793 += 9.0 / 1.0
12.218650793650793

A

[quote=Armando Pereira]

juno.rr:
Olá,

tenta assim, acho que funciona:

public double recEx(double inc, double n, double sum) {
    if(dec == 1) return sum;
    sum += ++inc / n--;
    System.out.println(sum + " += " + inc + " / " + n);
    return recEx(inc, n, sum);
  }

Olha a saída:

recEx(0, 10, 0);

0.1 += 1.0 / 9.0
0.3222222222222222 += 2.0 / 8.0
0.6972222222222222 += 3.0 / 7.0
1.2686507936507936 += 4.0 / 6.0
2.101984126984127 += 5.0 / 5.0
3.3019841269841272 += 6.0 / 4.0
5.051984126984127 += 7.0 / 3.0
7.718650793650793 += 8.0 / 2.0
12.218650793650793 += 9.0 / 1.0
12.218650793650793

import java.util.*;
public class Exemplo {

	/**
	 * @param args
	 */
	static double num;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner dd = new Scanner(System.in);
		System.out.println("Digite um número");
		num = dd.nextDouble();
		System.out.println("\n");
		System.out.println("Resultado = " + recEx(0.0,num,0.0));
	}

	public static double recEx(double inc,double n,double sum){
		if (n == 0) return sum;
		sum += ++inc / n--;
        System.out.println(sum + " += " + inc + " / " + n);
        return recEx(inc, n, sum);
		}
		
	}

Está é uma saida.

Digite um número
2


0.5 += 1.0 / 1.0
2.5 += 2.0 / 0.0
Resultado = 2.5

:thumbup: Valeu mesmo !!!

juno.rr

Opa, “my bad”.
Onde está “dec” era pra ser “n” mesmo.

as variáveis “inc” e “sum”, recebem sempre 0 na primeira chamada.
Valeu.

Criado 3 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 6
Participantes 4