给学习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));
     }
}

 

转载于:https://www.cnblogs.com/snake-hand/archive/2013/06/05/3119928.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值