Olá, antes de mais nada gostaria de dizer obrigado a quem responder minha dúvida. Bom eu estou aprendendo a linguagem C, e em um dos livros que estou lendo, vi um código que utiliza a recursividade para inverter uma string:
#include<stdio.h>#define SIZE 80void reverse(constchar*const sPtr );// prototypeint main(void){char sentence[ SIZE ];// create char array
puts("Enter a line of text:");// use fgets to read line of text
fgets( sentence, SIZE, stdin );
puts("\nThe line printed backward is:");
reverse( sentence );}// end main// recursively outputs characters in string in reverse ordervoid reverse(constchar*const sPtr ){// if end of the stringif('\0'== sPtr[0]){// base casereturn;}// end ifelse{// if not end of the string
reverse(&sPtr[1]);// recursion step
putchar( sPtr[0]);// use putchar to display character }// end else}// end function reverse
Código retirado do livro: C - How to Program 7th edition, página: 347, autor: Deitel.
Minha dúvida é a seguinte: como a função "reverse" funciona? Algúem pode me explicar detalhadamente? Porque não consegui entender como ela inverte um string, sendo que na linha: 21, a chamada "reverse" é chamada e recebe como argumento o endereço de memória do segundo espaço do array "sentence", e eu imagino, como ela inverte um string sendo que na próxima chamada recursiva, ela vai receber novamente "o endereço de memória do segundo espaço do array(sentence)".
Desde já agradeço a qualquer um que se comprometer a sanar minha dúvida.
Pergunta
Matheus22
Olá, antes de mais nada gostaria de dizer obrigado a quem responder minha dúvida. Bom eu estou aprendendo a linguagem C, e em um dos livros que estou lendo, vi um código que utiliza a recursividade para inverter uma string:
Código retirado do livro: C - How to Program 7th edition, página: 347, autor: Deitel.
Minha dúvida é a seguinte: como a função "reverse" funciona? Algúem pode me explicar detalhadamente? Porque não consegui entender como ela inverte um string, sendo que na linha: 21, a chamada "reverse" é chamada e recebe como argumento o endereço de memória do segundo espaço do array "sentence", e eu imagino, como ela inverte um string sendo que na próxima chamada recursiva, ela vai receber novamente "o endereço de memória do segundo espaço do array(sentence)".
Desde já agradeço a qualquer um que se comprometer a sanar minha dúvida.
Editado por Matheus22Correções.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.