| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4905 人关注过本帖
标题:c语言用递推的方法求1+2+3...+n的和
只看楼主 加入收藏
维生素abc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-11-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
c语言用递推的方法求1+2+3...+n的和
我的刚接触c,很多不懂得地方,谢谢大家指教
搜索更多相关主题的帖子: c语言 递推 方法 
2018-11-09 17:00
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


/*
求 1 + 2 + 3 ...n 的和;
*/

/*
递归的思想分析下:
1到n,假设[1~n-1]的和我知道了,结果 + n = [1, n]到结果;
....依次类推,得到一个最小规模问题的解,那么我们后面所有的都知道了;
*/

// 随着函数调用,似的问题规模不断减少的同时,栈在往下面一直增加;
// 直到遇到最小规模的问题得到解决,栈才不会增加了,才会一次返回;
static int sum_value(int n) {
    if (n == 1) { // 问题规模最小 n = 1;
        return 1;
    }

    // 假设n-1规模问题得到解决,推导出n的问题规模的结构;
    int ret = sum_value(n - 1); // 递归调用
    return (n + ret); // n-1,推导出n的结果
}

// (1)假设小一级规模得到解决,推导出当前规模的问题解;
// (2) 问题规模转化越来越小, 最小规模的问题,我们返回一个值,
// (3) 随着问题规模的大小1000的,10000的,同样的代码对栈的消耗是不一样的
// (4) 对栈的消耗,不是鲁棒的;
// 普通的算法,对栈的消耗不会随着问题规模的变化而变化;
// 递归算法, 问题的规模越大,递归的次数越大,那么对栈的消耗就越大;
// (5) 每个引用程序的栈的大小是固定的,你递归的时候层次不易过多,否则容易出现栈溢出;
// (6) 解决规模不大的问题;
// (7) 数学归纳法的思想,能够方便我们写出复杂的逻辑;
// (8) 程序中栈的大小是可以由编译器来配置,那么编译出来的程序,就会使用你设置的栈的大小,默认是1M;
// (9) 如果你实在要用递归,然而栈不够用,可以通过修改编译器来改变栈的大小;
// (10) 栈是可以修改大小的,
static int sum_value2(int n) {
    int sum = 0;
    for (int i = 1; i < n; i++) {
        sum += i;
    }

    return sum;
}

int main(int argc, char** argv) {
    // 1到5,和 1 + 2 + 3 + 4 + 5
    int ret = sum_value(10000);
    printf("ret = %d\n", ret);
    system("pause");
    return 0;
}

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-09 18:02
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:10 
递归:
程序代码:
#include<stdio.h>
int add(int n)
{
    if(n<=1) return 1;//结束条件
    else return (add(n-1)+n);
}
int main()
{
    printf("%d",add(100));
    return 0;
}

saber,别哭.
2018-11-09 18:14
快速回复:c语言用递推的方法求1+2+3...+n的和
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017673 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved