iOS-C_Day6___递归

2015.1.27

函数递归:一个函数直接或者间接在函数内调用自己,称这个函数是递归定义的;

//n! = n*(n-1)!

//5! = 5*4!

//4! = 4*3!

//3! = 3*2!

//2! = 2*1!

//1! = 1;  //base case

//递归通常分为三个阶段: 递归前进段,递归边界条件,递归后退段

//long func(int n)//

//{

//    if (n==1) {//递归退出条件

//        return 1;

//    }

//    return n*func(n-1);

//}

//

//int main(int argc, const char * argv[]) {

//

//    printf("%ld\n", func(12));

//

//    return 0;

//}

//斐波那契数列

//1 1 2 3 5 8 13 21 34 55 89 144 ....

//int feibonaqi(int n)

//{

//    if (n==1 || n==2) {

//        return 1;

//    }

//    return feibonaqi(n-1)+feibonaqi(n-2);

//}

//

//int main(int argc,const char *argv[])

//{

//    for (int i=1; i<=40; i++) {

//        printf("%d ", feibonaqi(i));

//    }

//    printf("\n");

//    return 0;

//}

//1、编写递归函数求两个正整数a和b的最大公约数(GCD,Greatest Common Divisor),使用Euclid算法:

//

//如果a除以b能整除,则最大公约数是b。

//

//否则,最大公约数等于b和a%b的最大公约数。

//

//Euclid算法是很容易证明的,请读者自己证明一下为什么这么算就能算出最大公约数。最后,修改你的程序使之适用于所有整数,而不仅仅是正整数。

//int euclid(int a, int b)

//{

//    if (!(a%b)) {

//        return b;

//    }

//    return euclid(b, a%b);

//}

//

//int main(int argc,const char *argv[])

//{

//

//    printf("%d\n", euclid(319, 377));

//    return 0;

//}

//2、  趣味问题——年龄。有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?用递归算法实现。

int age(int n)

{

if (n==1) {

return 10;

}

return age(n-1)+2;

}

int main(int argc, const char *argv[])

{

printf("age = %d\n", age(6));

return 0;

}

时间: 2024-08-06 20:05:27

iOS-C_Day6___递归的相关文章

ios视图递归显示

po [self.view recursiveDescription]; 显示如下 <__NSArrayM 0x7b920e50>( <UITableViewWrapperView: 0x7b933960; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x7b933f20>; layer = <CALayer: 0x7b933c60>; contentOffset: {0, 0}; contentS

PromiseKit 解析 (二) 递归 IOS

在PromiseKit中,里面涉及了很多的递归操作,而递归操作,对于大部分人理解起来都是比较麻烦的(包括我),而github中一些高上大的第三方库,无一不涉及了很漂亮的递归操作,因此理解递归操作是很必要的.如果想成为尽可能优秀的程序猿. 递归操作:自己调用自己,不停的压栈,最后出栈.(说的简单,但是还是理解起来还是比较复杂的) 我们来接着看看PromiseKit的递归操作,看看它的链式结构式怎么样实现的. 相信在上一章就可以了解到,then操作最后返回的是一个新的PMKPromise,然后返回的

蓝懿iOS培训日志11 递归

今天讲的文件管理器 递归 递归就是方法调用自身 简单几行代码功能却非常强悍. //判断是否是文件夹 BOOL isDir = NO; NSFileManager *fm = [NSFileManager defaultManager]; if ([fm fileExistsAtPath:filePath isDirectory:&isDir]&&isDir) { cell.accessoryType = UITableViewCellAccessoryDisclosureIndic

iOS函数,函数递归

#import <Foundation/Foundation.h> #import "Function.h" int main(int argc, const char * argv[]) { //函数定义 /*返回值类型 函数名(参数1, 参数2, 参数3, 参数4) { 函数体; return 返回值; } */ //函数四种基本类型: //无参无返回值 //实参 到形参的过程是一个拷贝的过程 //函数的值,要哟过对应的数据类型进行接收 //c语言允许函数嵌套调用,不允

【学习ios之路:C语言】函数及递归的简单应用

函数定义: 返回值类型 函数名(形参列表){函数体(函数的实现内容)}; 函数定义的四种形式: //函数定义第一种形式: 无参数, 无返回值 void byMilk() { //如果没有参数,小括号必不可少. printf("没钱\n"); } //函数名的命名规范:由多个英文单词组成,除了第一个单词的首字母小写,其余单词首字母大写. //函数定义第二种形式,有返回值,无参数 float salary() { printf("同志们辛苦了\n"); return 0

IOS 阶段学习第七天笔记(函数、递归)

一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1  形参名1,形参类型2   形参名2.....){ 函数体://函数的实现 } 3)函数名要符合标示符的定义 4)函数的返回类型可为空,为空用void;也可以是其他数据类型. 5)void函数的调用:函数名(); void类型不能用任何类型去接收. 6)int 类型函数的调用:定义int类型的数据去接收函数的返回值,例如: int sum=add(x,y); 有时候也可以

IOS - 递归

递归 递归的理解就是自己调用自己,C#中也是这么理解的,将满足的条件返回,不满足的时候自己调用自己 object-c: - (int)sum:(int)num{ if(num == 0){ return num; } return num + [self sum:num - 1]; } 递归: 1. 有一个明确的出口 2.不满足条件的时候,自己调用自己 block: static int(^sumBlock)(int) = ^ (int num){ if(num == 0){ return nu

iOS:Block写递归

首先来一个 oc 的递归: - (int)sum:(int)num { if (num == 0) { return num; } return num + [self sum:num - 1]; } 写递归算法只需要记住两点即可: 1. 有一个明确的出口 2. 不满足条件出口时,自己调用自己 按照以上思路用 block 改写一下: static int (^sumBlock)(int) = ^ (int num) { if (num == 0) { return num; } return n

iOS 递归锁

递归锁 原理:递归锁也是通过 pthread_mutex_lock 函数来实现,在函数内部会判断锁的类型.NSRecursiveLock 与 NSLock 的区别在于内部封装的 pthread_mutex_t 对象的类型不同,前者的类型为 PTHREAD_MUTEX_RECURSIVE 运用场景:循环(多张图片循环上传),递归 //递归锁实例化 NSRecursiveLock *lock = [[NSRecursiveLock alloc] init]; static void (^Recurs

iOS界面布局的核心以及TangramKit介绍

前言 TangramKit是iOS系统下用Swift编写的第三方界面布局框架.他集成了iOS的AutoLayout和SizeClass以及Android的五大容器布局体系以及HTML/CSS中的float和flex-box的布局功能和思想,目的是为iOS开发人员提供一套功能强大.多屏幕灵活适配.简单易用的UI布局解决方案.Tangram的中文即七巧板的意思,取名的寓意表明这个布局库可以非常灵巧和简单的解决各种复杂界面布局问题.他的同胞框架:MyLayout是一套用objective-C实现的界面