程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 給學習C語言的新手的求和程序及求積程序

給學習C語言的新手的求和程序及求積程序

編輯:關於C

很多初學C語言的人,一開始都會有求和以及求積的程序,如果用簡單的將輸入的數一個個加起來那樣是很繁瑣的,當然效率是高的,但是程序看起來非常不簡潔!如果你學習用遞歸方式求解,你會發現一切都是那麼簡單!下面的例子就是用遞歸方式求和以及求積。

#include<stdio.h>
#include<stdlib.h>
#define N 10

float  g(float a[],int n); /*求和函數*/
float f(float a[],int n);  /*求積函數*/
/*為了保證正確度,所有的類型都用浮點型表示,雖然這多消耗了內
存,但能得到更正確的結果,所以這是值得的*/
int main()
{
    float x[N+1],y[N+1],sum,num;
    int i;
    x[0]=1,y[0]=0; /*零位不用,置一*/
    for(i=1;i<=N;i++){
         printf("please input a type of float :\n");
         scanf("%f",&x[i]);
    }
    for(i=0;i<=N;i++){
        y[i]=x[i];
    }
    num=g(x,N);sum=f(y,N);   /*一定要用兩個數組,因為數組做參數,不是傳值調用*/
    printf("sum is %f\nthe average sum is %f:\n",sum,sum/N);
    printf("num is %f\nthe average num is %f:\n",num,num/N);
    getch();return 0;

}
/**功能:求數組的積
  返回參數: 數組類型a,整數n代表數組中含有多少個元素
  傳入參數: 數組的積
*/
float f(float a[],int n)  /*有n個元素存放在數組a中,實際有n+1*/
{
    float s=0;
    if(n==1){
       return  a[1];
    }
    else if(n<=0){    /*這種情況不可能發生,只是用於演示*/
       printf("the code is full of errors,the programme will exit");
       exit(0);
    }
    else {
        s=a[n];
        a[n]=1;  /*該位置一,以在後續運算中清除*/
        return (s*f(a,n-1));
        
    }
}
/**功能:求數組的和
  返回參數: 數組類型a,整數n代表數組中含有多少個元素
  傳入參數: 數組的和
*/
float g(float a[],int n)
{
     float s=0;
     if(n==1)
        return a[1];
     else if(n<=0){      /*這種情況不可能發生,只是用於演示*/
       printf("the code is full of errors,the programme will exit");
       exit(0);
     }
     else {
       s=a[n];
       a[n]=0;
       return (s+g(a,n-1));
     }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved