2011-03-24 89 views
-5

我需要一個遞歸函數Ç,支票/在奇數位置中的陣列的偶數位置比較值(整數)的總和,與值的總和。還打印(功能內)較大的和!C程序遞歸函數奇數

像:

printf("\nThe bigger sum is %d. \n evensum = %d , oddsum = %d \n",bigger, evensum, oddsum); 

假設數組有8個位置,我們填補它的main()用隨機值。

這是我到目前爲止有:

#include <stdio.h> 
#define N 4 


int checksum(int matrix[], int position, int sum1, int sum2); 

int main(void) 
{ 
    int mat[N]; 
    int i,j; 

    printf("\nEnter the %d numbers:\n", N); 

     for(i = 0; i < N; i++) 
     { 
     printf("%2d> ",i); 
     scanf("%d", &mat[i]); 
     } 

     checksum(mat, 0, 0, 0);  


} 

int checksum(int m[], int pos, int s1, int s2){ 

if(pos<N){ 
    if(pos==0){ 
      s1 = m[pos];  
      checksum(m, pos+1, s1, s2);   
     }else{ 
      if(pos%2){ 
       return s1 + checksum(m, pos+1, s1, s2);  

      }else{ 
       return s2 + checksum(m, pos+1, s1, s2);       
      } 

     } 

    } 

} 
+10

您應該嘗試自己編寫該程序。如果您遇到具體問題,請發佈您的代碼並尋求指導。 – MacGucky 2011-03-24 01:14:34

+1

我試過這個:http://pastie.org/1706480 – Lamp 2011-03-24 01:22:07

+0

你要求stackoverflow做你的功課?哇。哇哇! -1。 – 2011-03-24 01:28:46

回答

3

除了所有他們在你選擇的樂趣,我知道你是誠實的標註的「功課」。我要告訴你的是你的解決方案。爲了充分利用這一點,您應該瞭解它。如果不是,你只是在愚弄自己。我真的希望這可以幫助你在其他方面,而不僅僅是一個家庭作業。

你仍然需要用隨機值完成向量,並打印出更大的值。但這是小菜一碟。遞歸可製成這樣的:

#include <stdio.h> 
#define MAX 10 

int sum(int *x, int n, int odd) 
{ 

    if(odd==-1) 
    { 
     printf("odd = %d, even = %d\n", sum(x, n, 1), sum(x, n, 0)); 
     return 0; 
    } 

    if(n%2!=odd) 
     return sum(x, n+1, odd); 

    if(n>=MAX) 
     return 0; 

    return x[n]+sum(x, n+1, odd); 
} 



int main(void) 
{ 
    int x[MAX]={0,1,2,3,4,5,6,7,8,9}; 

    sum(x, 0, -1); 

    return 0; 
} 

一件事你的問題沒有......如果你讀了定義的標籤作業暫停你的鼠標光標,你會讀「並表現出足夠的努力」。

因此,請根據需要調整代碼後,您如何在此處顯示最終答案,作爲您努力學習c語言的標誌? ;)

保重! Beco。

+0

讀完你的代碼後,我注意到你使用了前向遞歸。下面是一個更像你的第一個直覺的例子:http://pastebin.com/UQEeRi7K現在,如果你調試兩個遞歸,他們之間的主要區別和他們移動信息的方向是什麼? – 2011-03-25 02:39:15

+0

主要區別在於:* seven = * seven + m [pos]和* sodd = * sodd + m [pos]。以前總結了當前pos值和最終printf.Thanks對於你的時間。 – Lamp 2011-03-25 12:11:05

+0

實際上,理解路徑後的主要區別在於一個是在調用函數時添加的,另一個是在返回時添加的。 – 2011-04-08 18:56:32