递归函数,也就是不断的调用自身的函数,使用递归能够比较方便的解决一些比较难使用循环解决的问题。就在这个例子中,求一个数组a[]的前n项和,也就是求a[n-1]+a[n-2]+…+a[0],那么如果一个函数sum是用来求数组前n项和的,sum定义为sum(int a[],int n),则使用递归的方式就是
a[n-1]+sum(a,n-1)。
使用代码来表述可能更好一些:
~~~
#include <stdio.h>
int sum(int test[],int n);
/**
* @brief main 使用递归求一个数组的前n个元素的和
* 假设数组为a[];则求其前n的元素的和也就是求
* a[n-1]+a[n-2]+...a[0]
* @return
*/
int main(void)
{
int n;
printf("Please input the number of an array:\n");
scanf("%d",&n);
printf("Please enter the element of the array:\n");
int test[n];
int i;
for(i = 0;i < n;i++)
scanf("%d",&test[i]);
int count = sum(test,n);
printf("The sum of the array is : %d.\n",count);
return 0;
}
/**
* @brief sum 实现前n个元素的和
* @param test 要求和的数组
* @param n 所要求的前n个元素
* @return 返回前n个元素的和
*/
int sum(int test[],int n){
if(n <= 0)
return 0;
return test[n-1]+sum(test,n-1);
}
~~~
下面是我的程序的输出,这个程序比较简单。
![这里写图片描述](https://box.kancloud.cn/2016-05-24_5743c0752130f.jpg "")
- 前言
- 实例一:HelloWorld
- scanf函数学习
- 实数比较
- sizeof()保留字获取类型的大小
- 自增/自减学习
- C学习if条件判断和for循环
- C实现的九九乘法表
- C实现一个比较简单的猜数游戏
- 使用C模拟ATM练习switch..case用法
- 记录一个班级的成绩练习一维数组
- C数组实现矩阵的转置
- C二维数组练习
- 利用数组求前n个质数
- C实现万年历
- C实现数组中元素的排序
- C实现任意进制数的转化
- C判断一个正整数n的d进制数是否是回文数
- C使用递归实现前N个元素的和
- 钢材切割问题
- 使用指针比较整型数据的大小
- 指向数组的指针
- 寻找指定元素
- 寻找相同元素的指针
- 整数转换成罗马数字
- 字符替换
- 从键盘读入实数
- C实现字符行排版
- C实现字符排列
- C实例--判断一个字符串是否是回文数
- 通讯录的输入输出
- 扑克牌的结构定义
- 使用“结构”统计学生成绩
- 报数游戏
- 模拟社会关系
- 统计文件中字符个数
- C实现两个文件的内容输出到同一个屏幕