#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(@"\n---------我是分割线------------\n"); //二、求和 NSLog(@"求和:%d",[self sum:10]); NSLog(@"\n---------我是分割线------------\n"); NSMutableArray * arr = @[@100,@50,@4,@200,@400].mutableCopy; //三、冒泡排序 NSLog(@"冒泡排序:"); for (id s in [self sortArrBig:arr]) { NSLog(@"%@ ",s); } NSLog(@"\n---------我是分割线------------\n"); //四、水仙花 [self Narcissus]; NSLog(@"\n---------我是分割线------------\n"); //五、将一个正整数分解质因数 NSLog(@"正整数分解质因数"); [self PositiveInt:20]; NSLog(@"\n---------我是分割线------------\n"); /* 六、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 */ NSLog(@"猴子吃桃问题:%d",[self peach:10]); NSLog(@"\n---------我是分割线------------\n"); //七、数列求和 /*有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。*/ NSLog(@"数列的前20项之和:%f",[self molecule:3]); NSLog(@"\n---------我是分割线------------\n"); /*八、打印菱形 * *** ***** *** * */ [self diamond:3]; NSLog(@"\n---------我是分割线------------\n"); //九、无重复三位数 /* 有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("\n"); } 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("\n"); } } -(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