总和正确的3的权力,但拧干

时间:2016-09-05 17:48:17

标签: c math

#include <stdio.h>
#include <stdlib.h>

int summation(int sum,int Num[],int n) {
    if (n < 0) { 
        return sum;
    } else {    
        printf("%d \n", Num[n]);
        sum = Num[n] + summation(sum, Num, n - 1);
    }
}   

int main () {

    int i = 0, j = 0 , k = 0, n = 0;
    printf("Enter number of numbers: ");
    scanf("%d", &n);
    int Num[n];
    while (i < n) {
        //printf("Enter number %d : ", i);
        //scanf("%d", &Num[i]);     
        Num[i] = 1;     
        i++;        
    }
    int sum = 0;
    sum = summation(sum, Num, n);
    printf("The sum is %d \n", sum); 
}   

上述程序仅在3时正常运行 为什么它只产生3,3 ^ 3,3 ^ 9 ??

的结果

请帮帮我这个程序只运行3次。现在我计算了3 ^ 1,3 ^ 3和3 ^ 9。对于其他数字,它返回错误的值。

1 个答案:

答案 0 :(得分:1)

  1. 您忽略了从summation函数返回值。一个好的编译器会引起你注意这个事实。
  2. 使用等于函数大小的n调用summation,这会导致此行:

    sum = Num[n] + ...
    

    读取数组末尾的内容。

这些错误会导致未定义的行为,,这可能会显示三种权力或其他任何内容的奇怪偏好。