Jump to content

Função recursiva em c++


joaosporting
 Share

Recommended Posts

Neste fórum, pedir um código é pedir muito. Nós podemos ajudar, mas tens de apresentar trabalho em concreto. Não pode ser "toma lá". Entendes?

Sabes o princípio da Recursividade ou nem por isso?

Ou a dúvida é no algoritmo em si?

Uma ideia:


Função QtsAlgarismos(Por Valor numero Inteiro)

  Se (numero Pertence A [0, 9]) Então Retorna 1

  SeNão Retorna 1 + QtsAlgarismos(numero DIV 10)

Fim Função


Knowledge is free!

Link to comment
Share on other sites

if (n < 10)

Ou será que o número 10 só tem um dígito? 🙂

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

De facto, se quiseres obter um float, tens que fazer o cast a um deles 😉

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

Em Pascal, int / int = real, tal como na matemática. 😉

Na Matemática normalmente não distingues um inteiro de um real, e assumes que estás a trabalhar com reais.

Mas quando se trabalha com álgebras de inteiros, é normal a divisão ser a divisão inteira (até porque reais não inteiros são coisas desconhecidas).

Link to comment
Share on other sites

Na Matemática normalmente não distingues um inteiro de um real, e assumes que estás a trabalhar com reais.

Mas quando se trabalha com álgebras de inteiros, é normal a divisão ser a divisão inteira (até porque reais não inteiros são coisas desconhecidas).

Álgebra é algo com o qual não estou familiarizado. Os inteiros pertencem aos números reais, logo pode-se dizer que dividir dois inteiros retorna um real, que poderá ser um caso especial em que esse real seja também inteiro.

  • 9 / 2 = 4,5  »  real(int) / real(int) = real
  • 9 / 3 = 3    »  real(int) / real(int) = real(int)

😉

Knowledge is free!

Link to comment
Share on other sites

Em 7/1/2011 às 21:53, thoga31 disse:

Álgebra é algo com o qual não estou familiarizado. Os inteiros pertencem aos números reais, logo pode-se dizer que dividir dois inteiros retorna um real, que poderá ser um caso especial em que esse real seja também inteiro.

  • 9 / 2 = 4,5  »  real(int) / real(int) = real
  • 9 / 3 = 3    »  real(int) / real(int) = real(int)

Estás perfeitamente correcto. Por isso é que em C é possível converter para "real" (ou a representação aproximada de números reais que são os floats) como tu fazes:

x = 9/(float)2
x fica com o valor 4.5

Caso não explicites que estás a usar números reais são inteiros e operações entre inteiros, devolvem inteiros como é natural. Podes dizer que inteiros pertencem aos reais (isto é qualquer inteiro pode ser representado como um real), mas se estás a tratá-los exclusivamente como inteiros (conjunto Z) as operações entre eles estão naturalmente no mesmo conjunto (Z) que não é (R).

Não respondo a dúvidas por mensagem.

Link to comment
Share on other sites

É por estas e por outras que C e C++ nunca me atraíram... 😛

Em Pascal, int / int = real, tal como na matemática. 😉

(já chega de off-topic 😉)

Pah, podes fazer:

float x;
x = 9.0/2;

E assim não precisas de fazer o cast.

Ao nível do computador existe uma distinção entre teres um inteiro e teres um float, são representados de forma diferente em memória mas ocupam exactamente o mesmo espaço. Ou seja, ambos podem ser lidos como int ou como float se quiseres, os valores é que vão ser completamente diferentes.

As "outras linguagens" que falas acabam por fazer o processo de conversão por ti, criando espaços em memória necessários para efectuar a transição para outra representação. Nem sempre quer dizer que é melhor usares uma linguagem que faça "tudo" por ti. Podes ganhar velocidade de implementação, mas perdes optimização e flexibilidade.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.