您的位置:首页 > 理论基础 > 数据结构算法

《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-6(question?)

2012-10-05 14:56 309 查看
【例10-6】编写一个递归函数sum(int n),完成计算1+2+3+...+n。

【分析】

设计递归计算法是面试题中常见的一类问题。传统的计算累加求和的问题多用循环实现,但这里要使用递归方法。其实可以将题目中这个计算求和的函数sum()定义为递归函数如下:



这是因为sum(n)表示计算1+2+3+...n的和。当n等于1时,很显然sum(n)等于1,当n大于1时,1+2+3+...+n的和等于n+(1+2+3+...+n-1)的和,而1+2+3+...+n-1的和可用sum(n-1)表示,因此构成了递归结构。

这样就可以方便地设计出sum的递归算法。

int sum(int n)

{

if(n==1) return 1;

else return n+sum(n-1);

}

下面给出完整的测试程序,程序清单10-6

#include "stdio.h"

int sum(int n)

{

if(n==1) return 1;

else return n+sum(n-1);

}

main()

{

int n;

printf("Please input a integer for counting 1+2+...+n\n");

scanf("%d",&n);

printf("The result of 1+2+...+%d is\n%d",n,sum(n));

getche();

}

本程序运行结果如下图所示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐