黑马程序员技术交流社区
标题: 1112-练习-编写求阶乘的函数 [打印本页]
作者: donkey2 时间: 2014-11-12 23:30
标题: 1112-练习-编写求阶乘的函数
本帖最后由 donkey2 于 2014-11-15 10:08 编辑
/*
题目:
编写一个函数int pieAdd(int n),计算1!+2!+3!+……+n!的值(n>=1)。
比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9
*/
// 1*2*..*n 或 n(n-1)..1
#import <Foundation/Foundation.h>
int pieAdd(int n);
int n;
int sum;
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
// NSLog(@"Hello, World!")
NSLog(@"请输入一个正整数") ;
scanf("%i",&n);
sum = pieAdd(n);
NSLog(@"计算的结果为 %i",sum);
}
return 0;
}
int pieAdd(int t)
{
int result = 0;
// 1! + 2! + ...+ ...
for (int j=1 ; j <= n; j++) {
int k=1;
for(int i = 1;i <= j;i++){
//阶乘的数
k *= i;
}
result +=k;
}
return result;
return 0;
}
遇到的问题:
我开始把int k = 1 初始化在两个for循环的外面了,于是计算的结果怎么都不对啊。
差点哭晕在厕所!!!
特别要注意for循环中变量的生存周期啊!
假设 n = 3,定义在外面的话,大循环再次执行时,k中已经有值为2,
本来是3*2*1,结果计算机会算成3*2*2,最终结果15比正确结果大6,就出错在这一步。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |