本帖最后由 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,就出错在这一步。
|