Me expressei mal , não quero a resolução pronta e sim norte por onde começar para chegar na resolução
F
FacaNaCaveira
Bom dia @lucas0019, cara vamos la, basicamente quando vc utiliza recursividade tem que ter em mente que é uma função que chama ela mesma baseado em um condição e so para quando essa mesma não é mais satisfeita. Meio complicado a explicação mas vamos la.
1º a meu ver apesar de especificar com a entrada sendo um numero inteiro utilizaria a entrada como String para poder utilizar a função substring e ir pegando casa a casa
2º estabelecer uma conidção para que toda vez que ache um numero 7 ele incremente uma variavel contadora e caso o tamanho tptal da string nao tenha sido alcançado ele execute a proxima chamada passando pro parametro a proxima posição.
Veja se isso ja te ajuda.
Qualquer coisa estamos por aqui
Abraços
Max
L
lucas0019
Bom dia FacaNaCaveira , poderia me mostrar como fica eu tentei aqui mas não consegui , por gentileza?
L
lucas0019
Opa acabei de consegui fazer aqui ,ficou assim:
publicstaticvoidmain(String[]args){intn=ocorrencia("1734177",'7');System.out.println("O numero de ocorrencias no numero apresentado é de : "+n);}privatestaticintocorrencia(Strings,charc){if(s.equals("")){return0;}elseif(s.charAt(0)==c){returnocorrencia(s.substring(1),c)+1;}else{returnocorrencia(s.substring(1),c);}}}
J
Jothar_Aleksander
Só tem um problema no seu algoritmo:
Logo, o método recursivo deve receber um (1) inteiro e não uma string e um char.
importjava.io.PrintStream;importjava.util.Scanner;publicclassPrograma{publicstaticvoidmain(String[]args){try{Programaprograma=newPrograma();programa.executar();}catch(Throwablet){t.printStackTrace();}}privatefinalScannerinput=newScanner(System.in);privatefinalPrintStreamoutput=System.out;publicvoidexecutar()throwsException{output.print("Entrada: ");intentrada=Integer.parseInt(input.nextLine());output.print("Número a verificar: ");intnumero=Integer.parseInt(input.nextLine());intocorrencias=ocorrencias(entrada,numero);output.printf("O número %d possui %d ocorrência do número %d%n",entrada,ocorrencias,numero);}privateintocorrencias(intm,intn){if(m<10){returnm==n?1:0;}returnocorrencias(m%10,n)+ocorrencias(m/10,n);}}
L
lucas0019
Como eu posso deixar esse modo com a ocorrência negativa? , ex: inseri o numero 809990, então a saída seria -3, porque há 3 numeros 9 , agradeço desde já .
L
lucas0019
staroski?
S
Solucao aceita
staroski
Como se faz pra um valor ficar negativo?
Coloca o sinal de menos na frente ou multiplica por -1.
intocorrencias=-ocorrencias(entrada,numero);
L
lucas0019
Nesse caso só colocar o sinal , decupe-me se tiver fazendo perguntas toscas