我正在编写一个小的递归函数,以从数组中计算整数之和。但是,我收到错误和警告。有人帮我解决这些问题吗?
#import <Foundation/Foundation.h>
@interface SumIntegers:NSObject
{
NSInteger result;
}
-(NSInteger)calcutateSum:(NSInteger)value;
-(void) printSum;
@end
@implementation SumIntegers
-(NSInteger)calculateSum:(NSInteger)value
{
NSInteger sum = 0;
//sum = sum + [[self calculateSum:[array objectAtIndex:i]] integerValue];
sum = sum + [self calculateSum:value];
result = sum;
return result;
}
-(void) printSum
{
NSLog(@"Sum of integer list is %i",result);
}
@end
int main (int argc, const char * argv[])
{
NSInteger i;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *intArray = [NSMutableArray arrayWithObjects:[NSNumber numberWithInteger:1],[NSNumber numberWithInt:3],[NSNumber numberWithInt:5]
,[NSNumber numberWithInt:7],[NSNumber numberWithInt:9],nil];
SumIntegers *sumIntegers = [[SumIntegers alloc]init];
for (i = 0; i<[intArray count]; i++)
{
NSInteger hhh = [sumIntegers calculateSum:[[intArray objectAtIndex:i] integerValue]];
}
[sumIntegers printSum];
[pool drain];
return 0;
}
我要做的是创建一个接口SumIntegers并创建了一个递归函数来计算整数之和。但是,由于某种原因无法识别此功能,并且还会收到警告“类@end的实现不完整”和内存错误。
Warning(s):
source_file.m:31:1: warning: incomplete implementation of class ‘SumIntegers’
@end
^
source_file.m:31:1: warning: method definition for ‘-calcutateSum:’ not found
source_file.m: In function ‘main’:
source_file.m:44:19: warning: unused variable ‘hhh’ [-Wunused-variable]
NSInteger hhh = [sumIntegers calculateSum:[[intArray objectAtIndex:i] integerValue]];
^
Error(s):
Invalid memory reference (SIGSEGV)
答案 0 :(得分:0)
这是我对上述问题的回答。在calculateSum方法中不需要返回值或参数。只需将数组值添加到总和中,然后再次调用computeSum方法,直到num小于数组计数。
#import <Foundation/Foundation.h>
@interface SumOfIntegers:NSObject
{
NSMutableArray *intArray;
NSInteger sum;
NSInteger num;
}
@property NSMutableArray *intArray;
@property NSInteger sum, num;
-(void) calculateSum;
@end
@implementation SumOfIntegers
@synthesize intArray, sum, num;
-(void) calculateSum{
if(num < [intArray count])
{
NSLog(@"number is.... %i", num);
sum = sum + [[intArray objectAtIndex:num++] integerValue];
[self calculateSum];
}
else
{
NSLog(@"Sum of integers is %i", sum);
}
}
@end
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSNumber numberWithInteger:1],[NSNumber numberWithInt:3],[NSNumber numberWithInt:5]
,[NSNumber numberWithInt:7],[NSNumber numberWithInt:9],nil];
SumOfIntegers *sumOfIntegers = [[SumOfIntegers alloc]init];
sumOfIntegers.intArray = array;
sumOfIntegers.sum = 0;
sumOfIntegers.num = 0;
[sumOfIntegers calculateSum];
[pool drain];
return 0;
}
答案 1 :(得分:0)
在现代ObjC中:
id="builder-styles-css"