《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-6(question?)
2012-10-05 14:56
309 查看
【例10-6】编写一个递归函数sum(int n),完成计算1+2+3+...+n。
【分析】
设计递归计算法是面试题中常见的一类问题。传统的计算累加求和的问题多用循环实现,但这里要使用递归方法。其实可以将题目中这个计算求和的函数sum()定义为递归函数如下:
![](http://img.my.csdn.net/uploads/201210/05/1349420208_5083.png)
这是因为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();
}
本程序运行结果如下图所示
【分析】
设计递归计算法是面试题中常见的一类问题。传统的计算累加求和的问题多用循环实现,但这里要使用递归方法。其实可以将题目中这个计算求和的函数sum()定义为递归函数如下:
![](http://img.my.csdn.net/uploads/201210/05/1349420208_5083.png)
这是因为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();
}
本程序运行结果如下图所示
![](http://img.my.csdn.net/uploads/201210/05/1349420300_5519.png)
相关文章推荐
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-4(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-7(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-5(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-8(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-2(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-9(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-10(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-3(question?)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-1
- 微软等数据结构+算法面试100题(42)-- 设计一个栈结构
- 数据结构 - 链表 - 面试中常见的链表算法题
- 算法设计和数据结构学习_1(常见排序算法思想)
- 微软等数据结构+算法面试100题(49)-- 设计类
- 面试复习-------算法与数据结构------算法设计
- 算法设计和数据结构学习_2(常见排序算法思想)
- 微软等数据结构+算法面试100题(10)--三道面试题
- 算法设计和数据结构学习_2(常见排序算法思想)
- 【算法设计与数据结构】动态规划入门——URAL 1119 Metro
- java面试算法:设计搜索输入框的输入提示功能
- [最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案]