gpt4 book ai didi

iOS : unsigned long with big factorial

转载 作者:行者123 更新时间:2023-11-28 18:56:28 27 4
gpt4 key购买 nike

我正在尝试像下面这样制作阶乘方法

-(void)getFactorial{
NSString *numStr = [NSString stringWithFormat:@"%@", _maxTF.text];
max = strtoull([numStr UTF8String], NULL, 0);
for (unsigned long i = 1; i< max ; i++) {
unsigned long factorial = [self factorial:i];
if(factorial <= max){
NSLog(@"%lu (%lu! = %lu)",i ,i ,factorial);
}else{
break;
}
}
}

-(unsigned long) factorial:(unsigned long)n
{
if (n==0) {
return 1;//TODO make it empty
}
else
{
return n*[self factorial:n-1];
}
}

它很简单而且工作正常..直到我尝试像 (18446744073709551615) 这样的数字当 i = 20 时一定会停止,但 21 的阶乘实际上小于 20 的阶乘,因此它会继续直到达到零。

我想不通到底是哪里出了问题。

最佳答案

阶乘大于 unsigned long 允许的值,导致溢出(再次从 0 开始)使其看起来更小。

关于iOS : unsigned long with big factorial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com