《C语言及程序设计》实践参考——递归函数
2015-07-02 21:37
471 查看
返回:贺老师课程教学链接
【项目-递归函数】
(1)立方累加和:用递归函数求f(n)=13+23+...+n3f(n)=1^3+2^3+...+n^3,要求先将f(n)f(n)数学表达式表示成递归的形式,然后再编程序实现。
[参考解答]
递归公式:
f(n)={1,n3+f(n−1),n=1n>1f(n) = \begin{cases} 1, & \text{n=1} \\ n^3+f(n-1), & \text{n>1} \end{cases}
参考程序:
(2)写出求1∗3∗...∗n1*3*...*n的递归式,并编写出递归函数求解。
[参考解答]
递归公式:
f(n)={1,n∗f(n−2),n=1n是大于1的奇数f(n) = \begin{cases} 1, & \text{n=1} \\ n*f(n-2), & \text{n是大于1的奇数} \end{cases}
参考程序:
(3)编程序,用递归函数求出两个数的最大公约数。(包括编main函数,调用定义的递归函数)
[参考解答]
(4)编一个程序,读入具有5个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。
[参考解答]
【项目-递归函数】
(1)立方累加和:用递归函数求f(n)=13+23+...+n3f(n)=1^3+2^3+...+n^3,要求先将f(n)f(n)数学表达式表示成递归的形式,然后再编程序实现。
[参考解答]
递归公式:
f(n)={1,n3+f(n−1),n=1n>1f(n) = \begin{cases} 1, & \text{n=1} \\ n^3+f(n-1), & \text{n>1} \end{cases}
参考程序:
#include <stdio.h> int cube(int n); int main() { int n; scanf("%d",&n); printf("f(n)=%d\n", cube(n)); return 0; } int cube(int n) { if (n==1) return 1; else return n*n*n+cube(n-1); }
(2)写出求1∗3∗...∗n1*3*...*n的递归式,并编写出递归函数求解。
[参考解答]
递归公式:
f(n)={1,n∗f(n−2),n=1n是大于1的奇数f(n) = \begin{cases} 1, & \text{n=1} \\ n*f(n-2), & \text{n是大于1的奇数} \end{cases}
参考程序:
#include <stdio.h> long f(int); int main( ) { int n; long y; printf("请输入一个数 :"); scanf("%d", &n); if(n%2) //若奇数 y=f(n); else y=f(n-1); printf("%d以内的奇数积是:%ld\n", n, y); return 0; } long f(int n) { long s; if (n==1) s=1; else s=f(n-2)*n; return s; }
(3)编程序,用递归函数求出两个数的最大公约数。(包括编main函数,调用定义的递归函数)
[参考解答]
#include <stdio.h> int gcd(int x, int y); int main() { int m,n; printf("输入两个数字:"); scanf("%d %d", &m, &n); printf("最大公约数:"); printf("%d\n", gcd(m,n)); return 0; } int gcd(int a, int b) { int t, g; //if (a < b) t=a,a=b,b=t; //无所谓大小 if (b==0) g=a; else g=gcd(b,a%b); return g; }
(4)编一个程序,读入具有5个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。
[参考解答]
#include<stdio.h> int find(int a[],int n) { int m; if(n==0) return a[0]; else { m=find(a,n-1); return (m>a ?m:a ); } } int main() { int a[5],i; for(i=0; i<5; i++) scanf("%d",&a[i]); printf("%d",find(a,4)); return 0; }
相关文章推荐
- c语言实现window关机操作
- 《C语言及程序设计》实践项目——递归函数
- 《C语言及程序设计》程序阅读——递归函数
- c++ stl资源--qsort排序
- stl之vector的应用
- 自学笔记-C语言复习2015年7月2日
- c++ 重载运算与类型转换
- 《C++ 沉思录》阅读笔记——句柄类
- 《C++ 沉思录》阅读笔记——代理类
- strcpy/strncpy/strcat/strcmp/strlen函数的c语言实现
- C++之探索多态的本质(虚函数与虚表)2
- C++课程设计:学生成绩管理系统
- Visual C++ Tips: warning C4996: 'stricmp' was declared deprecated
- C++程序设计之四书五经[转自2004程序员杂志]--下篇
- C++程序设计之四书五经[转自2004程序员杂志]--上篇
- Visual C++ Tips: fatal error LNK1276: invalid directive 'ComMode.Obj' found; does not start with '/'
- Qt移动应用开发(六):QML与C++互动
- LeetCode-Largest Number-解题报告
- C++在stack的deque实现
- 【学习笔记】【C语言】条件编译