Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* Facon itérative */
  5. int syracuseIter(int n){
  6.  
  7. int cpt = 0;
  8.  
  9. /* La conjecture de syracuse montre que la suite atteint toujours 1
  10. (non démontré), 1 MILLION à celui qui réussi
  11. */
  12.  
  13. while ( n != 1 ){
  14. if ( n % 2 == 0 ){
  15. n /= 2;
  16. }
  17. else {
  18. n = 3 * n + 1;
  19. }
  20. cpt++;
  21. }
  22. return cpt;
  23. }
  24.  
  25.  
  26. /* Facon récursive */
  27. int syracuseRec(int n){
  28. if ( n == 1 ){
  29. /* Renvoie de l'élément neutre de l'addition
  30. car on compte le nombre d'appels de la fonction */
  31. return 0;
  32. }
  33. else {
  34. if ( n % 2 == 0 ){
  35. /* Renvoie de l'incrémentation + le nombre d'opérations qu'il reste */
  36. return 1 + syracuseRec( n / 2 );
  37. }
  38. else {
  39. return 1 + syracuseRec( 3 * n + 1);
  40. }
  41. }
  42. }
  43.  
  44.  
  45.  
  46. int main(int argc, char const *argv[]) {
  47. printf("%d\n", syracuseIter(7));
  48. printf("%d\n", syracuseRec(7));
  49. return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement