您的位置:首页 > 编程语言 > C语言/C++

C语言的函数,还有递归调用

2016-08-02 12:50 246 查看
               今上午开始讲到了函数,函数在c语言中是很重要的的部分。

函数的定义:函数名,参数列表,返回值。

函数的几种类型:

1没有返回值,没有参数

2没有返回值,但是有参数

3有返回值,但是没有参数

4有返回值,有参数

形参变量还有实参

1形参变量只有在被调用时才会分配内存单元,在调用结束时,即释放所分配的内存单元,因此,形参只有在函数内部使用

2实参可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用时,他们必须有确定的值,一便把这些值传递的实参。

3函数在调用时发生的数据传递是单向传递的,只能把实参的值传递形参,不能反向传递,在内存中,形参还有实占有不同对的单元,在函数调用时,给形参分配存储单元,因此,在函数调用时,形参的值发生变化,实参的值是不会发生变化的。

函数的递归调用

函数的递归调用在C语言中是很重要的,重要的事情说三遍,

递归的三要是:1重复调用自己  2一定要有边界,不然死循环 3算法

下面是函数的递归调用常用例子

用递归把十进制转为二进制

#include<stdio.h>

#include"day8.h"

//void main(){

//add();

//

//}

void get(int a){
int i;
if (a == 0) return 0;
else {
i = a % 2;
get(a/2);
printf("%d", i);
}

}

void main(){
int num;
printf("输入的十进制数\n");
scanf_s("%d", &num);//输入的十进制数
get(num); 
system("pause");


}


递归求偶数的和

#include<stdio.h>

#include"day8.h"

//void main(){

//add();

//

//}

int s = 0;

void get(i){
if (i <= 100){
if (i%2==0){
s += i;
}
get(++i);
printf("%d", s);
}
else if(i>100){
return  0;
}getchar();

}

void main(){
int i = 1;
get(i);

}


随机数0到n之间偶数的和

//#include<stdio.h>

//#include "day8.h"

void add(){
int n, i, j;
int s = 0;
scanf_s("%d",&n);
getchar();//输人随机数n

for (i = 2; i <= n; i++)
{
for (j = 2; j <= i - 1; j++)
{
if (i%j == 0)
break;
}
if (j == i)
s = s + i;
printf("%d,%d\n",i,s);

}
getchar();
getchar();

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