2014-06-22 3 views
-1

Existe-t-il une formule simple pour calculer cette valeur?Recherche d'une formule pour remplacer la boucle

var quantity = 10 
var starting_price = 10 

var cost = 0 
var price = starting_price 
for (var n=1; n<=quantity; n++) { 
    cost += price 
    price += price * 0.01 
} 

console.log('final price: '+price) 
console.log('total cost: '+cost) 

donc 1 coûterait 10, 2 coûterait 20,1, 3 coûterait 30,3, 4 coûterait 40,6, 5 coûterait 51. Y at-il une formule simple que je pourrais utiliser pour calculer ce lieu de faire une boucle?

+0

Calculez quoi? Vos calculs sont basés sur une boucle incrémentant la variable? – tymeJV

+0

Mise à jour de la question pour avoir plus de sens. – Dan

Répondre

1

Une telle question peut toujours être demandé à Wolfram Alpha:

Pour prix (n):

Question: f(0) = 10, f(n) = f(n-1) + f(n-1) * 0.01

Réponse: f (n) = 10^(1 -2N) 101^n

Pour coût (n):

Question: g(n) =10^(1-2n) 101^n, f(0) = 0, f(n) = f(n-1) + g(n-1)

Réponse: f (n) = 10^(3-2n) 101^n - 1000

Traduit en JavaScript:

function price(n) { 
    return Math.pow(10, 1 - 2*n) * Math.pow(101, n); 
} 

function cost(n) { 
    return Math.pow(10, 3 - 2*n) * Math.pow(101, n) - 1000; 
} 

Le nom d'une telle formule est recurrence equation, vous apprenez par exemple dans vos premiers semestres comme un étudiant de premier cycle CS. C'est assez facile à faire "manuellement" après avoir résolu quelques exemples.


Après le changement de OP:

Pour prix (n):

Question: f(0) = c, f(n) = f(n-1) + f(n-1) * d

Réponse: f (n) = c * (d + 1)^n où c = 10, d = 0,01

Pour coût (n):

Question: g(n) =c (d+1)^n, f(0) = 0, f(n) = f(n-1) + g(n-1)

Réponse: f (n) = c/d ((d + 1)^n - 1)

Pour voir si les résultats sont les mêmes:

question: c/d ((d+1)^n - 1) = 10^(3-2n) 101^n - 1000 where c = 10, d = 0.01

Réponse: Vrai

+0

Merci! Mais il semble que la formule change si le prix de départ change. J'ai mis à jour ma question pour que cela ait plus de sens. – Dan

+0

Vous n'avez pas pris la peine de regarder Wolfram Alpha, n'est-ce pas? J'ai mis à jour ma réponse. – kay

Questions connexes