zoukankan      html  css  js  c++  java
  • 几次到1(分治递归)

         输入一个正整数,处理它:如果是偶数就除以2,如果是奇数就加1或减1,一直处理下去,直到结果为1停止,最少需要操作几次?(要求用递归)

         我的代码可能有bug,还望高手指点!如果谁有更好的解法也请赐教啊!

    代码:

    #include<stdio.h>
    #include<stdlib.h>
    
    int fun(int n);
    int min(int a,int b);
    
    int main()
    {
      int n;
       
       while(scanf("%d",&n) != EOF )
          printf("%d\n",fun(n));                     
          
      //system("pause");
      return 0;    
    }
    int min(int a,int b)
    {
        return a<b? a:b;
    }
    int fun(int n)
    {
       if(n == 1) return 0;
       if(n & 1)
          return 2 + min( fun( (n+1)/2 ),fun( (n-1)/2 ));
       else   
          return 1 + fun(n/2);  
    }
    
  • 相关阅读:
    iOS~runtime理解上篇
    iOS
    iOS-数据库+上传队列+runtime
    python3
    必应壁纸破解下载
    python3-django Mac下安装以及查看路径
    iOS
    iOS
    Tornado异步之-协程与回调
    iOS
  • 原文地址:https://www.cnblogs.com/HpuAcmer/p/2294015.html
Copyright © 2011-2022 走看看