Aries之递归算法实际应用

在调用一个函数的过程中又出现直接或间接地调用该函数本身,成为函数的递归调用.
递归的两个条件:
1.函数自己调用自己;
2.必须有个明确地返回值.
说明: 函数每次调用,都会分配新的存储空间.
例一:
有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第四个人岁数,他说比第三个人大2岁,以此类推,最后问第一个人,他说是10岁。请问第5个人多大?

-(NSUInteger)computeAgeWithNumber:(NSUInteger)num {
    if (num == 1) return 10;
    return [self computeAgeWithNumber:num-1] + 2;
}
- (void)viewDidLoad{
    [super viewDidLoad];
    NSUInteger result=[self computeAgeWithNumber:5];
    NSLog(@"result=%ld",result);
}

例二:
一列数的规则如下: 1、1、2、3、5、8、13、21、34、......求第30位是多少,用递归算法实现。

-(NSUInteger)computeCountwithNumber:(NSUInteger)num{
    if (num <= 2) return 1;
    return [self computeCountwithNumber:num-1] + [self computeCountwithNumber:num-2];      
}
- (void)viewDidLoad{
    [super viewDidLoad];
    NSUInteger result=[self computeCountwithNumber:30];
    NSLog(@"result=%ld",result);
}

例三:
利用递归实现n的阶乘的计算

-(NSUInteger)computeFactorialWithNumber:(NSUInteger)num {
    if (num == 0 || num == 1) return num;
    return [self computeFactorialWithNumber:num-1] * num;
}
- (void)viewDidLoad{
    [super viewDidLoad];
    NSUInteger result=[self computeFactorialWithNumber:5];
    NSLog(@"result=%ld",result);
}

你可能感兴趣的:(Aries之递归算法实际应用)