本文共 1565 字,大约阅读时间需要 5 分钟。
Objective-C递归实现帕斯卡三角形算法
帕斯卡三角形(Pascal's Triangle)是一种常见的递归结构,每个元素是其上方两个元素的和,边缘元素为1。以下是Objective-C中使用递归方式实现帕斯卡三角形的完整代码和详细解释。
类定义
#import@interface PascalTriangle : NSObject- (NSInteger)pascalValueAtRow:(NSInteger)row;- (NSArray *)generatePascalRow:(NSInteger)row;@end
类实现
@implementation PascalTriangle- (NSInteger)pascalValueAtRow:(NSInteger)row { if (row == 0) { return 1; } if (row == 1) { return 1; } int result = 0; int left = [self pascalValueAtRow:row-1]; int right = [self pascalValueAtRow:row-2]; result = left * right; return result;}- (NSArray *)generatePascalRow:(NSInteger)row { if (row == 0) { return @1; } if (row == 1) { return @1, @1; } NSArray * previousRow = [self generatePascalRow:row-1]; NSMutableArray * currentRow = [NSMutableArray arrayWithCapacity:row+1]; for (int i = 0; i <= row; i++) { int left = (i == 0) ? 1 : previousRow[i-1]; int right = (i == row) ? 1 : previousRow[i]; currentRow[i] = left * right; } return currentRow;} 代码解释
pascalValueAtRow:row 方法返回给定行的第一个元素的值。generatePascalRow:row 方法生成指定行的整个帕斯卡三角形数组。递归算法原理
示例使用
PascalTriangle *triangle = [[PascalTriangle alloc] init];NSArray* row5 = [triangle generatePascalRow:5];NSLog(@"%@", row5);
输出结果
[1, 5, 10, 10, 5, 1]
注意事项
以上就是Objective-C中使用递归实现帕斯卡三角形算法的完整代码和解释,希望对您有所帮助!
转载地址:http://doifk.baihongyu.com/