ios-简单算法
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
//一、斐波那契数列
for (int i=; i<; i++) {
NSLog(@"称斐波那契数列:%d",[self gold:i]);
}
NSLog(@"\n---------我是分割线------------\n");
//二、求和
NSLog(@"求和:%d",[self sum:]);
NSLog(@"\n---------我是分割线------------\n");
NSMutableArray * arr = @[@,@,@,@,@].mutableCopy;
//三、冒泡排序
NSLog(@"冒泡排序:");
for (id s in [self sortArrBig:arr]) {
NSLog(@"%@ ",s);
}
NSLog(@"\n---------我是分割线------------\n");
//四、水仙花
[self Narcissus];
NSLog(@"\n---------我是分割线------------\n");
//五、将一个正整数分解质因数
NSLog(@"正整数分解质因数");
[self PositiveInt:];
NSLog(@"\n---------我是分割线------------\n");
/*
六、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
*/
NSLog(@"猴子吃桃问题:%d",[self peach:]);
NSLog(@"\n---------我是分割线------------\n");
//七、数列求和
/*有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。*/
NSLog(@"数列的前20项之和:%f",[self molecule:]);
NSLog(@"\n---------我是分割线------------\n");
/*八、打印菱形
*
***
*****
***
*
*/
[self diamond:];
NSLog(@"\n---------我是分割线------------\n");
//九、无重复三位数
/*
有1、2、3、4,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
*/
[self threeInt];
}
//水仙花 数字
-(void)Narcissus{
int i,j,k,n;
for (n=; n<; n++) {
//分解出百位
i = n/;
//分解出十位
j = n/%;
//分解出个位
k = n%;
if (i*+j*+k == i*i*i+j*j*j+k*k*k) {
NSLog(@"%d",n);
}
}
}
-(void)PositiveInt:(int)n{
int i;
for (i=; i<n; i++) {
while (n!=i) {
if (n%i == ) {
NSLog(@"%d",i);
n = n/i;
}else{
break;
}
}
}
NSLog(@"%d",n);
}
-(int)peach:(int)n{
int day = n-,x1 = ,x2 = ;
while (day>) {
//第一天的桃子数是第2天桃子数加1后的2倍
x1 = (x2 + )*;
x2 = x1;
day--;
}
return x1;
}
-(float)molecule:(int)n{
int i,j,number = n;
float a = ,b = ,s = ;
for (i=; i<=number; i++) {
s = s+a/b;
j = a;
a = a+b;
b = j;
}
return s;
}
/*
*
***
*****
*******
*****
***
*
*/
//打印菱形
-(void)diamond:(int)n{
for (int i = ; i<=n; i++) {
for (int j = ; j<=n-i; j++) {
printf(" ");
}
for (int k = ; k<=*i-; k++) {
printf("*");
}
printf("\n");
}
for (int i= ; i<=; i++) {
for (int j = ; j<=i; j++) {
printf(" ");
}
for (int k = ; k<=*n--*i; k++) {
printf("*");
}
printf("\n");
}
}
-(void)threeInt{
NSMutableArray * arr = [[NSMutableArray alloc]init];
for (int i = ; i<; i++) {
for (int j = ; j<; j++) {
for (int k = ; k<; 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 = ; j<arr.count - ; j++) {
//比较前后两个值大小
for (int i = ; i<arr.count-; i++) {
//前后值互换
if (arr[i] > arr[i+]) {
id small = arr[i];
arr[i] = arr[i+];
[arr replaceObjectAtIndex:i+ withObject:small];
}
}
}
return arr;
}
//函数就是用来求和的 1+++到某个数的和
-(int)sum:(int)n{
if (n<=){return-;}
else if (n==){return ;}
else {return [self sum:n-] +n;}
}
//黄金分割数列,又称斐波那契数列
//1,1,2,3,5,8,13,21,34
-(int)gold:(int)n{
if (n<=) return -;
if (n==||n==) return ;
else return [self gold:n-]+ [self gold:n-];
}
@end
ios-简单算法的更多相关文章
- iOS 简单工厂模式
iOS 简单工厂模式 什么是简单工厂模式? 简单工厂模式中定义一个抽象类,抽象类中声明公共的特征及属性,抽象子类继承自抽象类,去实现具体的操作.工厂类根据外界需求,在工厂类中创建对应的抽象子类实例并传 ...
- CPD轮播广告库的简单算法
在广告的领域中,有一种广告形式,采用的是CPD的售卖模式,为了对流量进行拆分,媒体方会对广告位进行轮播拆分.比如一个广告位,被拆成了10轮播,那么在广告主来预订广告位的时候,这个时候就可以告诉广告主, ...
- iOS 简单引导界面
代码地址如下:http://www.demodashi.com/demo/11607.html 前言 现在很多APP在用户第一次用的时候,由于用户可能并不知道其中一些功能点的时候,这个时候就需要我们来 ...
- php实现简单算法2
php实现简单算法2 去弄php手册,里面有数据结构,有数据结构就好办了,我的算法基础那么好. 而且的话有数据结构的话再配合我脑中的那些算法了,我就都ok啦. 在手册里面搜索php数据结构就好 路径如 ...
- php实现简单算法1
php实现简单算法1 <? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) functio ...
- php实现简单算法3
php实现简单算法3 这篇文章主要介绍了PHP经典算法集锦,整理了各种常见的算法,包括排序.查找.遍历.运算等各种常见算法原理与实现技巧,需要的朋友可以参考下 1.首先来画个菱形玩玩,很多人学C时在书 ...
- php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)
php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行) 一.总结 1.多复制上面写的代码,有利于检查错误 2.一层循环就解决了,前后两个指针,和大了 ...
- 【线性表基础】基于线性表的简单算法【Java版】
本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeR ...
- 一个简单算法题引发的思考<DNA sorting>(about cin/template/new etc)
首先是昨天在北京大学oj网上看到一个简单的算法题目,虽然简单,但是如何完成一段高效.简洁.让人容易看懂的代码对于我这个基础不好,刚刚进入计算机行业的小白来说还是有意义的.而且在写代码的过程中,会发现自 ...
- EmguCV学习——简单算法 差分与高斯
公司项目需要检测运动物体,我对opencv也没啥研究,google了好久看了好多方法,最简单的就是差分与高斯背景建模了. 旁边搞c++的同事正在搞更nb的算法,等出来了 我再转成C#版的分享. 先看差 ...
随机推荐
- 258. Add Digits(C++)
258. Add Digits Given a non-negative integer num, repeatedly add all its digits until the result has ...
- Android界面布局学习总结
参考文章: http://blog.csdn.net/shakespeare001/article/details/7843460 http://www.cnblogs.com/w-y-f/p/412 ...
- 使用Qt创建第一个OpenCV的Gui应用
写在前面 学习OpenCV有一些小日子了,发现群里还有很多初学OpenCV的人像我当初一样跌跌撞撞到处找资料,所以在这里把学习笔记分享给大家,希望有志学习OpenCV进行计算机视觉活动的小伙伴们能少走 ...
- 使用require.js时,解决AMD封装jquery1.4.1的问题。
require.config({ baseUrl: "js/", paths: { "jquery": "jquery-1.4.1.min" ...
- Oauth认证简介
Oauth是什么: 1.Oauth是一种安全认证的协议: 2.Oauth为用户资源的授权提供了一个安全的.开放而又简易的标准: 3.Oauth的授权不会使第三方触及到用户的账号信息(用户名和密码). ...
- HTML5-黑客帝国2D
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...
- window 配置 sendmail
从http://glob.com.au/sendmail/下载sendmail.zip 解压sendmail.zip到目录下(最好使用短路径,长路径会导致问题的出现),我安装的路径是: E:\wamp ...
- JavaScript 获取Select标签选中的项
<select name="select1" id="select1" onchange=setInput()> <option value= ...
- Android 即时语音聊天工具 开发
使用融云SDK 1. 功能需求分析 1.1 核心功能需求: * 即时通讯 * 文字聊天 * 语音聊天 1.2 辅助功能需求: * 注册.登录 * 好友添加功能 * 好友关系管理 2. 融云即时通讯平台 ...
- 在linux下实现UBOOT的TFTP下载功能
一.环境 1.条件 软件:虚拟机下linux(本文涉及到的是Ubuntu12.0.4). linux下的串口助手(例如minicom)或windows下的串口助手(例如超级终端.SecureCRT) ...