/* Program: recursive-series-proc.c (Report comments/bugs to chikh@yuntech.edu.tw) Function: 以間接遞迴的方式為二個數列進行個別元素相乘,再將個別乘積加總,類似為二個向量進行內積 (inner product)運算。本程式設mul()函數專責進行數列內對應元素之相乘運算,把乘積結果交給add() 函式作加總;add()內再呼叫mul(),要求mul()計算剩餘元素的乘積,如此反覆運行。透過這二個函數互 相呼叫,達到效果 */ #include int mul(int *, int *, int); int add(int *, int *, int, int); int mul(int *A, int *B, int i) { int c; if ((c=A[i]*B[i]) == 0) return 0; else return add(A,B,i+1,c); //把c累加到 } int add(int *A, int *B, int i, int c) { return c+mul(A,B,i); } int main() { int A[] = { 1, 2, 3, 4, 5, 0}, B[] = {-1,-2,-3,-4,-5, 0}; //最末元素0,代表數列至此結束,相關運算也將在此告一段落 printf("\n二數列個別元素乘積和 = %d",mul(A,B,0)); return 0; }