题目地址:贺老师C语言进阶练习题
问题1:
递归形式表达:
代码:
/*
Copyright(c)2018,CSDN学院行者-
All rights reserved.
文件名称:main.c
作者:乔帅
完成日期:2018年4月12日
版本号:v1.0
问题描述:递归函数
输入描述:无
程序操作:进行递归操作
程序输出:输出操作后的结果
*/
#include <stdio.h>
#define count 10
int sum(int);
int main(){
int re;
re = sum(count);
printf("%d的立方累加和为:%d\n",count,re);
return 0;
}
int sum(int n){
int s=0;
if(n>0){
s = (n*n*n) + sum(n-1);
}
return s;
}
运行结果:
问题2:
递归形式表达:
代码:
#include <stdio.h>
#define count 10
int sum(int);
int main(){
int re;
re = sum(count);
printf("%d\n",re);
return 0;
}
int sum(int n){
int s=1;
if(n>0){
s = n * sum(n-2);
}
return s;
}
运行结果:
问题3:
代码:
#include<stdio.h>
int sum(int,int);
int main(){
int a,b,re;
printf("input two number:");
scanf("%d %d",&a,&b);
re = sum(a,b);
printf("two number %d and %d greatest common divisor:%d",a,b,re);
return 0;
}
int sum(int a , int b){
int re , t;
if(a<b){
t = a;
a = b;
b = t;
}
if(b == 0){
re = a;
}else{
re = sum(b,a%b);
}
return re;
}
运行结果:
问题4:
代码:
#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[n]?m:a[n]);
}
}
int main(){
int s[5],i;
for(i = 0 ; i < 5 ; i++){
scanf("%d",&s[i]);
}
printf("%d",find(s,4));
return 0;
}
运行结果:
总结:递归是我们需要掌握的一种思想,递归可以用来解决与以上问题相类似的一系列问题,因此我们要熟练掌握这种思想,并且多加练习!