Exercícios Resolvidos de Recursividade

Ver Teoria

Enunciado

Escreva uma função recursiva que calcule a soma dos primeiros n cubos:

S ( n )   =   1 3   +   2 3   +   . . .   +   n 3

Chame essa função de S _ r e c u r s i v o . Crie também uma função que calcule essa soma de forma iterativa (usando laços de repetição, como f o r e w h i l e ) e chame-a de S _ i t e r a t i v o .

Passo 1

Eae, tudo tranquilo?

Vamos iniciar essa questão focando na função S _ r e c u r s i v o . Pra isso vamos relembrar que a recursividade é um mecanismo que permite uma função chamar a si mesma.

Para começarmos a trabalhar com essa função, precisamos determinar a recursão que será utilizada e os casos iniciais.

Para encontrarmos a nossa relação de recursividade, vamos escrever a função S ( n ) em função de S ( n - 1 ) :

S n = n 3 + S ( n - 1 )

Essa é a nossa relação de recursividade. Ela vai funcionar tipo um loop. Como, ao chamar um S _ r e c u r s i v o ( n ) , será chamado sempre um valor menor de n até que n = 1 , precisamos estabelecer nosso caso inicial, que é o caso que a função não vai chamar a si mesma ( n = 1 ). Esse vai ser o S _ r e c u r s i v o ( 1 ) = 1 .

Com base nisso, vamos declarar essa função com ambos, retorno e parâmetro, como u n s i g n e d   i n t , pois só serão utilizados valores positivos nessa função.

Passo 2

Já tendo definido o valor inicial para a nossa função de recursão, S 1 = 1 , vamos colocar isso no nosso código usando um condicional:

A seguir, vamos colocar a relação de recursão. E, para calcular o n 3 , vamos incluir a biblioteca m a t h . h e utilizar a função p o w para calcular potências.

Passo 3

Agora, vamos focar na função S _ i t e r a t i v o . Como ele também irá trabalhar apenas com valores interos positivos, vamos declarar essa função e o seu parâmetro como u n s i g n e d   i n t .

A seguir, para calcularmos a soma dos cubos por meio de um laço de repetição, é necessário criar uma variável para acumular o valor dessa soma, que deverá ter valor inicial nulo. Vamos chamá-la de S .

Vamos usar um laço de f o r para que S acumule o valor de cada cubo, e esse loop precisa fazer n iterações. Então vamos definir a variável i começando do 1 e indo até o n .

Por fim, basta retornarmos o valor de S ao término do laço de f o r .

Resposta