签到

06月21日
尚未签到

共有回帖数 1

    做月子

    等级:
    #include stdio.h
    // 求数列a(1)=1,a(n)=a(n-1)+2n+1的第n项

    // 使用递归的方法
    int a(int n)
    {

    if(n == 1)
    // 当n=1时直接反回a(1)
    return 1;
    // else
    // 当n1时通过递推式来求a(n)
    return a(n - 1) + n*2 + 1;
    }

    // 不使用递归的方法
    int a2(int n)
    {
    int i = 0,an = 1;
    for(i = 2; i = n; i++)
    an = an + i*2 + 1;
    return an;
    }

    int main()
    {
    int n = 4;
    printf("a() returns %d.n",a(n));
    printf("a2() returns %d.n",a2(n));
    return 0;
    }
    #include stdio.h
    // 对一个数组进行求和

    // 使用递归的方法
    int sum(int* array,int n)
    {
    if(n == 1)
    // 当要求和的数只有一个时,显然求和结果就是这个数本身
    return array[0];
    // else
    // 当要求和的数不只一个时,先对前面的数求和,再加上最后一个数
    return sum(array,n - 1) + array[n - 1];
    }

    // 不使用递归的方法
    int sum2(int* array,int n)
    {
    int i = 0,v = 0;
    for(i = 0; i != n; i++)
    v += array;
    return v;
    }

    int main()
    {
    int array[5] = {2,3,2,6,1};
    printf("sum() returns %d.n",sum(array,5));
    printf("sum2() returns %d.n",sum2(array,5));
    return 0;
    }


    #include stdio.h

    // 求一个数组的最大值
    int maxdata(int* array,int n)
    {
    int v;
    if(n == 1)
    // 当要求和的数只有一个时,显然它就是最大值了
    return array[0];
    // else
    // 当要求最大值的数不只一个时,先对前面的数求最大值,再与最后一个数比较
    // {
    v = maxdata(array,n - 1);
    return v  array[n - 1] ? v : array[n - 1];
    // }
    }

    int maxdata2(int* array,int n)
    {
    int i = 0;
    int maxv = array[0];
    for(i = 1; i != n; i++)
    maxv = (maxv  array) ? maxv : array;
    return maxv;
    }

    int main()
    {
    int s[4] = {2,5,7,3};
    printf("maxdata() returns %dn",maxdata(s,4));
    printf("maxdata2() returns %dn",maxdata2(s,4));
    return 0;
    }

    楼主 2016-01-08 10:10 回复

    做月子

    等级:
    #include stdio.h
    // 使用递归的选择排序法

    // 求数组中最大值出现的位置
    int maxp(int* array,int n)
    {
    int mp;
    if(n == 1)
    return 0;
    mp = maxp(array,n - 1);
    return (array[mp]  array[n - 1]) ? mp : n - 1;
    }

    // 交换数组的两个元素
    void swap(int* a,int* b)
    {
    int v = *a;
    *a = *b;
    *b = v;
    }

    // 排序
    void sort(int* array,int n)
    {
    int mp;
    if(n == 1)
    return;
    mp = maxp(array,n);
    swap(&array[mp],&array[n - 1]);
    sort(array,n - 1);
    }

    int main()
    {
    int array[5] = {3,5,1,4,2};
    sort(array,5);
    printf("results: %d %d %d %d %d",array[0],array[1],array[2],array[3],array[4]);
    }

    1楼 2016-01-08 10:11 回复

共有回帖数 1
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知