有如下程序: #include int sum(int*array,int len) { if(len==0) return array[0]; else return array[0]+sum(ar

admin2021-06-15  29

问题 有如下程序:
    #include
    int sum(int*array,int len)
    {
    if(len==0)
    return array[0];
    else
    return array[0]+sum(array+1,len-1);
    }
    main()
    {
    int array[5]={1,2,3,4,5};
    int res=sum(array,4);
    printf("%d\n",res);
    }
    程序运行后的输出结果是(    )。

选项 A、15
B、10
C、8
D、1

答案A

解析 程序执行过程为:定义字符数组array,调用函数sum将数组首地址与4传入函数,len=4;len!=0递归调用sum(array+1,3)传入地址为数组第二个元素地址;len>0递归调用sum(array+1,2)传入地址为数组第三个元素地址;len>0递归调用sum(array+1,1)传入地址为数组第四个元素地址;len>0递归调用sum(array+1,0)传入地址为数组第五个元素地址,此时len=0,返回5;执行sum(array+1,1)余下语句,返回9;执行sum(array+1,2)余下语句,返回12;执行sum(array+1,3)余下语句,返回14;执行sum(array+1,4)余下语句,返回15,并输出。
转载请注明原文地址:https://kaotiyun.com/show/9Atp777K
0

最新回复(0)