GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


i = n + 2 ( i )

+2
vinians
F. Nizzio
6 participantes

Ir para baixo

i = n + 2 ( i ) Empty i = n + 2 ( i )

Mensagem por F. Nizzio Qui 23 Set 2010, 14:39

Bem, eu estou aqui para dizer sobre essa Formula Infinita que pensei:
i = n + 2 ( i )

Ela é sim, de certa forma, infinita, já que ela ficaria eternamente fazendo n + 2 ( i )

n = 2

i = 2 + 2 (i)
i = 4 [2 + 2 (i)]
i = 16 [2 + 2 (i)]

Em outras palavras...

i = n + 2 {n + 2 {n + 2 {n + 2 { n + 2 {n + 2 ....

Sem fechar as chaves mesmo, já que não tem fim Razz

Aí quando tentei programar o resultado em C++, para ver o que acontecia, digitei isso:

Código:
#include<iostream>
#include<stdio.h>

int main()
{
    int n,i;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);
    {
        int i=n+2*i;
        printf("%d",i);
    }
}

Mas tipo, ele deu um valor bem nav...

Resultou nisso:

programa escreveu: Digite um valor para n:

>> 5

-33832955

Alguem pode me explicar o porque desse numero negativo, sendo que não há nenhum número que possa o fazer nessa conta?
F. Nizzio
F. Nizzio

Data de inscrição : 19/07/2008
Reputação : -6
Número de Mensagens : 758
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por vinians Qui 23 Set 2010, 15:09

E ae amigão blz?
O valor negativo é devido ao fato de você não ter inicializado o valor de i.
Mesmo voce atribuindo a variavel no momento da declaração da mesma, a fómula faz referência ao valor anterior da variável. Veja um exemplo mais simples:
Código:

int i = 5 + i; //O mesmo erro aqui
Aqui também o valor de i é indefinido.

Pra resolver o seu problema voce tem que atribuir um valor inicial a I.
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Janx Qui 23 Set 2010, 16:18

i = n+2*i

Essa formula não da um valor infinito. Pelomenos, não só de usar uma vez!
A lógica fica assim:

Digamos que os valores iniciais são:
i = 0;
n = 1;

Executamos o código uma vez:
i = 1+(2*0)
i = 1

Outra:
i = 1+(2*1);
i = 3;

depois:
i = 1+(2*3);
i = 7;

Usar o i na formula, significa pegar o valor atual dele, antes de dar esse novo valor!


E como o vinians disse, você não setou um valor inicial para as variaveis i e n!
Assim o valor será aleatório e gerará resultados absurdos!
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Denis Lemos Qui 23 Set 2010, 17:01

No create:
Código:
i=1
n=2
No step:
Código:

i=n+(2*i)
No draw:
Código:

draw_text(50,50,"i="  +string(i) )

Se fizer isso, o número vai aumento de 4 em 4 infinitamente á cada STEP, mas no GM em 5 segundos aparece a menssagem de erro no draw da variável "i", fazem o teste para vocês verem, acho que o GM não suporta numeros gigantescos, acho não... agora tenho certeza !
Denis Lemos
Denis Lemos

Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Unity
  • C#
  • Godot
  • C ou C++


Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por vinians Qui 23 Set 2010, 17:40

Denis Lemos escreveu:No create:
Código:
i=1
n=2
No step:
Código:

i=n+(2*i)
No draw:
Código:

draw_text(50,50,"i="  +string(i) )

Se fizer isso, o número vai aumento de 4 em 4 infinitamente á cada STEP, mas no GM em 5 segundos aparece a menssagem de erro no draw da variável "i", fazem o teste para vocês verem, acho que o GM não suporta numeros gigantescos, acho não... agora tenho certeza !
Amigo, isso não é o GM. Qualquer linguagem tem um limite. E a fórmula apenas redefine uma variável progressivamente em função dela mesma. Seja em C, Basic, GM, C# sempre vai haver um limite. O GM provavelmente usa a variavel do tipo Extended (19 digitos significativos, expoentes -4932 a +4932) pois é feito em Delphi.
No caso da pergunta do nosso amigo, era porque não estava inicializando a variavel, ai já é outra coisa.
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por F. Nizzio Qui 23 Set 2010, 17:48

Denis, eu fiz em C++, não no game maker Happy

Janx, nessa formula o n + 2 ( i ) é sim feito infinitamente. o i está igualado a n + 2 ( i ), ou seja, esse i entre aspas EDIT parenteses recomeça tudo de novo. O i é a formula inteira, não é uma incognita a ser substituida normalmente.

No final da formula i, eu coloquei um multiplicador pelo proprio i, o que reinicia a conta aumentando o valor anterior. Deu para entender? Acho que não, não consigo explicar de um jeito muito claro XD

Vinians, então eu devo, lá em cima, escrever:
Código:
i = n + 2
E só lá em baixo multiplicar?


Última edição por F. Nizzio em Qui 23 Set 2010, 18:20, editado 1 vez(es)
F. Nizzio
F. Nizzio

Data de inscrição : 19/07/2008
Reputação : -6
Número de Mensagens : 758
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por vinians Qui 23 Set 2010, 18:04

F. Nizzio escreveu:Vinians, eu fiz em C++, não no game maker Happy
Sim eu sei, a resposta sobre o GM foi pro Denis Lemos.

Vinians, então eu devo, lá em cima, escrever:
Código:
i = n + 2
E só lá em baixo multiplicar?
Sim, voce tem que inicializar a variavel assim:

Código:

#include<iostream>
#include<stdio.h>

int main()
{
    int n,i, j;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);
    i = n + 2; //primeira vez
    // Loop com 10 iteracoes
    for (j = 0; j < 10; j++)
    {
        i=n+2*i;
        printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
    }
}
Além disso voce esta definindo a variavel i no inicio do programa "int i, n" e depois na propria formula.
Teste o exemplo que te mandei pra ver.
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por F. Nizzio Qui 23 Set 2010, 18:23

vinians escreveu:
F. Nizzio escreveu:Vinians, eu fiz em C++, não no game maker Happy
Sim eu sei, a resposta sobre o GM foi pro Denis Lemos.

Vinians, então eu devo, lá em cima, escrever:
Código:
i = n + 2
E só lá em baixo multiplicar?
Sim, voce tem que inicializar a variavel assim:

Código:

#include<iostream>
#include<stdio.h>

int main()
{
    int n,i, j;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);
    i = n + 2; //primeira vez
    // Loop com 10 iteracoes
    for (j = 0; j < 10; j++)
    {
        i=n+2*i;
        printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
    }
}
Além disso voce esta definindo a variavel i no inicio do programa "int i, n" e depois na propria formula.
Teste o exemplo que te mandei pra ver.

Ok, vou testar.

Aquela primeira parte aonde disse "Vinians, fiz em C++, não no Game Maker" era pra ser pro Denis também, escrevi Vinians sem querer. Já editei lá.

Vou testar e já edito.
F. Nizzio
F. Nizzio

Data de inscrição : 19/07/2008
Reputação : -6
Número de Mensagens : 758
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Janx Qui 23 Set 2010, 19:37

Não, só por você por o "i" ali ele não pega a formula ali outra vez!
Ele apenas multiplica pelo valor de "i"!

i não representa uma função, apenas um valor. Se você fizesse essa coisa de infinito o projeto iria travar!
Se quer um infinito mesmo é assim (Deve dar algum erro):

Código:
int n;

int I()
{return n+2*I();}

int main()
{
    int i = 0;
    n = 0;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);

    i = I();//n+2*i; //Trava aqui e não mostra valor algum
    printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
}

Você está entendendo errado o funcionamento. i representa um numero, quando você usa essa formula nele, ele fica com um numero X, depois quando ele é chamado novamente, é passado esse numero X, que então é alterado para um outro Y!

Um exemplo mais simples:
i = 1+i;

Da forma que você está pensando, i seria adicionado 1 eternamente!
Mas funciona assim:
i = 0; //Iniciando em 0
i = 1+i --> i = 0, então: i = 1+0 = 1
novo valor de i: 1
mais uma vez:
i = 1+i --> i = 1, então: i = 1+1 = 2
novo valor de i: 2!
Assim por diante!

O primeiro i (i = 1+i) é onde vai ser guardado o valor que resultar na conta, enquanto o segundo é apenas uma variavel.
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por vinians Qui 23 Set 2010, 20:25

Janx escreveu:Não, só por você por o "i" ali ele não pega a formula ali outra vez!
Ele apenas multiplica pelo valor de "i"!

i não representa uma função, apenas um valor. Se você fizesse essa coisa de infinito o projeto iria travar!
Se quer um infinito mesmo é assim (Deve dar algum erro):

Código:
int n;

int I()
{return n+2*I();}

int main()
{
    int i = 0;
    n = 0;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);

    i = I();//n+2*i; //Trava aqui e não mostra valor algum
    printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
}

Você está entendendo errado o funcionamento. i representa um numero, quando você usa essa formula nele, ele fica com um numero X, depois quando ele é chamado novamente, é passado esse numero X, que então é alterado para um outro Y!

Um exemplo mais simples:
i = 1+i;

Da forma que você está pensando, i seria adicionado 1 eternamente!
Mas funciona assim:
i = 0; //Iniciando em 0
i = 1+i --> i = 0, então: i = 1+0 = 1
novo valor de i: 1
mais uma vez:
i = 1+i --> i = 1, então: i = 1+1 = 2
novo valor de i: 2!
Assim por diante!

O primeiro i (i = 1+i) é onde vai ser guardado o valor que resultar na conta, enquanto o segundo é apenas uma variavel.
Exatamente Janx, provavelmente uma solução recursiva seria muito interessante nesse caso. Mais toda função recursiva tem que ter uma condição de saida para esvaziamento da pilha e retorno dos calculos.

No exemplo que coloquei apenas tirei o bug da não inicialização da variavel. Geralmente nunca podemos usar uma fórmula que faça referência a uma variavel em sua propria inicialização, pois o avaliador de expressões vai pegar o valor anterior ou atual da variavel, que no caso, será indefindo.
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Fuzenrad Qui 23 Set 2010, 20:42

Só complementando:

var=var+1 é uma função de atribuição, onde você não quer reiniciar a variável, utilizando seu valor original para adicionar, multiplicar, dividir, etc.

Inclusive é mais usual estruturalmente, usar códigos como:
var+=1;
var/=4;
var*=2;
var^=2;
E assim por diante.


Última edição por Fuzenrad em Qui 23 Set 2010, 21:15, editado 1 vez(es)
Fuzenrad
Fuzenrad

Games Ranking : Nota A

Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Kabeção Qui 23 Set 2010, 21:08

Janx escreveu:i não representa uma função, apenas um valor. Se você fizesse essa coisa de infinito o projeto iria travar!
Se quer um infinito mesmo é assim (Deve dar algum erro):

Código:
int n;

int I()
{return n+2*I();}

int main()
{
    int i = 0;
    n = 0;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);

    i = I();//n+2*i; //Trava aqui e não mostra valor algum
    printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
}
Chamar a função dentro da própria função não é logicamente impossível?
Não seria nem questão de loop, é algo totalmente ilógico.
Como vou chamar a função dinovo se ela nem sequer terminou de ser executada?
Como ela pode retornar um valor para a conta se o valor nem sequer foi calculado?
Só de pensar nisso da um nó nos neurônios. bounce

No GM fazer isso retornaria um erro agora de C++ nunca tentei...
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por vinians Qui 23 Set 2010, 21:12

Kabeção escreveu:
Janx escreveu:i não representa uma função, apenas um valor. Se você fizesse essa coisa de infinito o projeto iria travar!
Se quer um infinito mesmo é assim (Deve dar algum erro):

Código:
int n;

int I()
{return n+2*I();}

int main()
{
    int i = 0;
    n = 0;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);

    i = I();//n+2*i; //Trava aqui e não mostra valor algum
    printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
}
Chamar a função dentro da própria função não é logicamente impossível?
Não seria nem questão de loop, é algo totalmente ilógico.
Como vou chamar a função dinovo se ela nem sequer terminou de ser executada?
Como ela pode retornar um valor para a conta se o valor nem sequer foi calculado?
Só de pensar nisso da um nó nos neurônios. bounce

No GM fazer isso retornaria um erro agora de C++ nunca tentei...
'
É possivel sim amigão, inclusive isso se chama recursividade e é uma tecnica muito utilizada por exemplo em calculo de fatorial, pesquisa de indice (arvores binárias) etc, como eu disse, desde que tenha uma condicao de saida nao tem problema algum veja este exemplo (C/C++ ou Java):
Código:

int fatorial (int n)
{
    if(n==1)
        return n;
    return fatorial(n-1) * n;         
}
Tem muita aplicação, mais tem que ter cuidado com a pilha (heap ou RAM dinamica)
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Kabeção Qui 23 Set 2010, 21:37

vinians escreveu:
Kabeção escreveu:
Janx escreveu:i não representa uma função, apenas um valor. Se você fizesse essa coisa de infinito o projeto iria travar!
Se quer um infinito mesmo é assim (Deve dar algum erro):

Código:
int n;

int I()
{return n+2*I();}

int main()
{
    int i = 0;
    n = 0;
    printf("Digite um valor para n:\n\n>> ");
    scanf("%d",&n);

    i = I();//n+2*i; //Trava aqui e não mostra valor algum
    printf("%d",i); //agora vai dar um valor coerente pois i foi inicializada
}
Chamar a função dentro da própria função não é logicamente impossível?
Não seria nem questão de loop, é algo totalmente ilógico.
Como vou chamar a função dinovo se ela nem sequer terminou de ser executada?
Como ela pode retornar um valor para a conta se o valor nem sequer foi calculado?
Só de pensar nisso da um nó nos neurônios. bounce

No GM fazer isso retornaria um erro agora de C++ nunca tentei...
'
É possivel sim amigão, inclusive isso se chama recursividade e é uma tecnica muito utilizada por exemplo em calculo de fatorial, pesquisa de indice (arvores binárias) etc, como eu disse, desde que tenha uma condicao de saida nao tem problema algum veja este exemplo (C/C++ ou Java):
Código:

int fatorial (int n)
{
    if(n==1)
        return n;
    return fatorial(n-1) * n;         
}
Tem muita aplicação, mais tem que ter cuidado com a pilha (heap ou RAM dinamica)
Eu olho pra isso é meu cérebro continuar a dar nós. nuu não
Bom, é uma boa hora para dar uma pesquisada sobre isso. xD

Mas mesmo assim o infinito logicamente não existe na programação certo?
Se não houver uma condição para fechar o loop o programa simplesmente travará, ou por atingir o valor máximo de um int ou por consumir toda a memória consigo.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por F. Nizzio Qui 23 Set 2010, 23:10

BEm... resumindo, se alguem puder me ajudar, eu estou querendo fazer algo assim.

i = n + 2 ( i )

Mas de um jeito que dê certo em C++ (eu sei que fora da programação essa formula é válida)
F. Nizzio
F. Nizzio

Data de inscrição : 19/07/2008
Reputação : -6
Número de Mensagens : 758
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Janx Sex 24 Set 2010, 15:23

Você pode tentar da forma que eu mostrei, mas não pode deixar isso infinitamente, pois só iria travar.

Seria algo como por um loop while sem break, dessa forma:

while (1)
{
...
...
...
...
}

O programa iria 'travar' sem um break para finalizar o while.

Tente explicar melhor o que você quer fazer, por enquanto não vejo finalidade alguma nisso..
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : i = n + 2 ( i ) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Convidad Dom 26 Set 2010, 12:22

Note que se o valor i = 0 então i será sempre o valor de n. Acho que dentro dessa condição, i não pode ser 0 e n não pode ser (i * -1), então, vai depender muito do que você quer fazer, pois essa fórmula pode gerar sempre o mesmo valor nessas condições. Tente nos dizer o propósito da fórmula, talvez possamos ajudar de outra maneira ou com outra lógica.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

i = n + 2 ( i ) Empty Re: i = n + 2 ( i )

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos