zoukankan      html  css  js  c++  java
  • ios-简单算法

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor whiteColor];
    
        
        //一、斐波那契数列
        for (int i=1; i<10; i++) {
            NSLog(@"称斐波那契数列:%d",[self gold:i]);
        }
        
        NSLog(@"
    ---------我是分割线------------
    ");
        
        //二、求和
        NSLog(@"求和:%d",[self sum:10]);
        NSLog(@"
    ---------我是分割线------------
    ");
        NSMutableArray * arr = @[@100,@50,@4,@200,@400].mutableCopy;
        
        //三、冒泡排序
        NSLog(@"冒泡排序:");
        for (id s in [self sortArrBig:arr]) {
            NSLog(@"%@ ",s);
        }
        NSLog(@"
    ---------我是分割线------------
    ");
        
        //四、水仙花
        [self Narcissus];
    
        NSLog(@"
    ---------我是分割线------------
    ");
    
        //五、将一个正整数分解质因数
        NSLog(@"正整数分解质因数");
        [self PositiveInt:20];
        NSLog(@"
    ---------我是分割线------------
    ");
        /*
        六、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
         */
        NSLog(@"猴子吃桃问题:%d",[self peach:10]);
        NSLog(@"
    ---------我是分割线------------
    ");
        
        //七、数列求和
        /*有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。*/
        NSLog(@"数列的前20项之和:%f",[self molecule:3]);
        NSLog(@"
    ---------我是分割线------------
    ");
        /*八、打印菱形
         
             *
            ***
           *****
            ***
             *
         
         */
        [self diamond:3];
        NSLog(@"
    ---------我是分割线------------
    ");
    
        //九、无重复三位数
        /*
         有1、2、3、4,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
         */
        [self threeInt];
    }
    
    //水仙花 数字
    -(void)Narcissus{
        
        int i,j,k,n;
        for (n=100; n<1000; n++) {
            //分解出百位
            i = n/100;
            //分解出十位
            j = n/10%10;
            //分解出个位
            k = n%10;
            if (i*100+j*10+k == i*i*i+j*j*j+k*k*k) {
                NSLog(@"%d",n);
            }
        }
    }
    
    
    -(void)PositiveInt:(int)n{
        
        int i;
        for (i=2; i<n; i++) {
            while (n!=i) {
                if (n%i == 0) {
                    NSLog(@"%d",i);
                    n = n/i;
                }else{
                    break;
                }
            }
        }
        NSLog(@"%d",n);
    }
    
    
    -(int)peach:(int)n{
        
        int day = n-1,x1 = 0,x2 = 1;
        while (day>0) {
            
            //第一天的桃子数是第2天桃子数加1后的2倍
            x1 = (x2 + 1)*2;
            x2 = x1;
            day--;
        }
        return x1;
    }
    
    -(float)molecule:(int)n{
        
        int i,j,number = n;
        float a = 2,b = 1,s = 0;
        for (i=1; i<=number; i++) {
            
            s = s+a/b;
            j = a;
            a = a+b;
            b = j;
        }
        return s;
    }
    /*
         *
        ***
       *****
      *******
       *****
        ***
         *
    */
    //打印菱形
    -(void)diamond:(int)n{
        
        for (int i = 1; i<=n; i++) {
            for (int j = 1; j<=n-i; j++) {
                printf(" ");
            }
            for (int k = 1; k<=2*i-1; k++) {
                printf("*");
            }
            printf("
    ");
        }
        for (int i= 1; i<=3; i++) {
            
            for (int j = 1; j<=i; j++) {
                printf(" ");
            }
            for (int k = 1; k<=2*n-1-2*i; k++) {
                printf("*");
            }
            printf("
    ");
        }
    }
    
    
    -(void)threeInt{
        
        NSMutableArray * arr = [[NSMutableArray alloc]init];
        for (int i = 1; i<5; i++) {
            for (int j = 1; j<5; j++) {
                for (int k = 1; k<5; k++) {
                    if (i!=k && i!=j && j!=k) {
                        //确保i、j、k三位互不相同
    //                    NSLog(@"%d,%d,%d",i,j,k);
                        [arr addObject:[NSString stringWithFormat:@"%d%d%d",i,j,k]];
                    }
                }
                
            }
        }
        NSLog(@"四个数组合三位数:%@",arr);
    }
    
    -(NSMutableArray*)sortArrBig:(NSMutableArray*)arr{
        
        //个数-1 次循环
        for (int j = 0; j<arr.count - 1; j++) {
            //比较前后两个值大小
            for (int i = 0; i<arr.count-1; i++) {
                //前后值互换
                if (arr[i] > arr[i+1]) {
                    id small = arr[i];
                    arr[i] = arr[i+1];
                    [arr replaceObjectAtIndex:i+1 withObject:small];
                }
            }
        }
        return arr;
    }
    
    //函数就是用来求和的 1+++到某个数的和
    -(int)sum:(int)n{
        
        if (n<=0){return-999999;}
        else if (n==1){return 1;}
        else   {return  [self sum:n-1] +n;}
    }
    
    //黄金分割数列,又称斐波那契数列
    //1,1,2,3,5,8,13,21,34
    
    -(int)gold:(int)n{
        
        if (n<=0)  return -9999999;
        if (n==1||n==2) return 1;
        else return  [self gold:n-2]+ [self gold:n-1];
    }
    
    @end
  • 相关阅读:
    计算机世界中解决问题的三种技术手段
    应用程序池的经典模式与集成模式的区别
    sh文件的编译
    flex学习开始了
    com,ActiveX,Ole之间的关系学习总结
    "正在等待localhost。。”问题的解决
    一些感悟
    面向对象软件工程方法学实践【转】
    外连接在sqlserver和access之间的差异
    外连接在sqlserver和access之间的差异
  • 原文地址:https://www.cnblogs.com/sayimba/p/6265153.html
Copyright © 2011-2022 走看看