Il y a deux variables entière. Pouvez-vous échanger ces variables entière sans utiliser de conditions si, sans casting, et sans utiliser de variables supplémentaires? Par exemple: a> b code> toujours. La réponse doit être
a == 5 code> et
b == 10 code> p> p> p>
6 Réponses :
Oui, vous pouvez le faire en utilisant plus / moins opération.
Example: num1 = num1 + num2; num2 = num1 - num2; num1 = num1 - num2;
Mieux vaut utiliser l'addition / la soustraction pour éviter les débordements et les problèmes d'arrondissement. Cela dit, il vaut mieux utiliser une variable Temp, mais toujours.
Multiplier / Diviser ne fonctionne pas si NUM2 est 0.
Merci pour les informations et les mises à jour maintenant
a=a+b; b=a-b; a=a-b;
C'est un peu tour.
a=a+b b=a-b a=a-b That's it!
Si vous pensez être Quoi qu'il en soit, j'ai résolu le problème avec l'opérateur XORWise: P> int code> pour stocker le variable temporairement.
a ^= b;
b ^= a;
a ^= b;
En savoir plus sur l'échange avec XOR est ici ici en.wikipedia.org/wiki/xor_swap_algorithm
Cela ne fonctionne pas si a == b code>.
Quelle langue utilisez-vous?
@Axoren: Non, cela n'a pas échoué.
Mon erreur. Il échoue si a code> et
B code> sont des références à la même variable, pas si elles sont la même valeur. Par exemple:
int c; int * a = & c; int * b = & c; code>. Dans ce cas,
* a ^ = * b code> entraînera les deux
* a code> et
* b code> pour devenir 0 en même temps, menant au valeur étant perdue. Il est toujours important de noter que si vous essayez d'implémenter une méthode d'échange qui fonctionne avec les adresses de la variable.
En fait, toutes les réponses à cette question échouent dans cette affaire. Je pense que cela devrait faire partie d'une question d'entretien.
Votre exemple "échoue" car vous avez les variables pointant vers la même position de mémoire. Ce n'est pas dans la portée de la question
simple essayer ce et c'est il p> p>
Non, je n'ai aucune idée de la façon de ralentir un problème ou de le faire aller plus vite.
semble être une tâche des devoirs si c'est le cas, vous devriez l'étiqueter en tant que telle
Duplicaté: Stackoverflow. com / questions / 804706 / ...
pouvez-vous résoudre ce problème
N'est-ce pas charmant, quand quelqu'un évite une duplication des devoirs? : P
Certainement pas une maison - trop complexe pour cela. OK pour l'entretien.
Juste par intérêt de quelqu'un d'un autre camp, est une solution comme la liste
($ A, $ b) = tableau ($ B, $ a) code> possible dans c #?
me rappelle un rubis A, B = B, une solution :) (ses tableaux)
Je ne vois aucune indication de la langue ici, il ne peut donc pas être répondu de manière satisfaisante.