Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- /* Facon itérative */
- int syracuseIter(int n){
- int cpt = 0;
- /* La conjecture de syracuse montre que la suite atteint toujours 1
- (non démontré), 1 MILLION à celui qui réussi
- */
- while ( n != 1 ){
- if ( n % 2 == 0 ){
- n /= 2;
- }
- else {
- n = 3 * n + 1;
- }
- cpt++;
- }
- return cpt;
- }
- /* Facon récursive */
- int syracuseRec(int n){
- if ( n == 1 ){
- /* Renvoie de l'élément neutre de l'addition
- car on compte le nombre d'appels de la fonction */
- return 0;
- }
- else {
- if ( n % 2 == 0 ){
- /* Renvoie de l'incrémentation + le nombre d'opérations qu'il reste */
- return 1 + syracuseRec( n / 2 );
- }
- else {
- return 1 + syracuseRec( 3 * n + 1);
- }
- }
- }
- int main(int argc, char const *argv[]) {
- printf("%d\n", syracuseIter(7));
- printf("%d\n", syracuseRec(7));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement