初识C语言函数

一、函数是什么

二、函数的分类

(1)、库函数

(2)、自定义函数

函数的组成:

 三、函数的参数

(1)、实际参数(实参)

 (2)、形式参数(形参)

 四、函数的调用

(1)、传值调用

 (2)、传址调用

五、函数的嵌套调用和链式访问

(1)、函数的嵌套调用、

函数的嵌套调用就是在一个函数中再嵌套使用另一个函数

如下代码

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void yest2()
{
	printf("hehe\n");
}
int yest3()
{
	yest2();
	return 0;
}
int main()
{
	yest3();
	return 0;
}

输出结果如下

 (2)函数的链式访问

函数的链式访问就是将一个函数的返回值作为另一个函数的参数

如下代码

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>

int main()
{
	int len = strlen("abcd");
	printf("%d\n", len);

	printf("%d\n", strlen("abcd"));
}

输出结果如下

六、函数的递归

(1)、什么是递归?

(2)、递归的两个必要条件

七、递归练习

(1)、

代码如下

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void print(unsigned int n)
{
	if (n > 9)
	{
		print(n / 10);
	}
	printf("%d ", n % 10);
}
int main()
{
	unsigned int num = 0;
	scanf("%u", &num);
	print(num);
	return 0;
}

输出结果如下

(2)不设置临时变量,求字符串长度

代码如下

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int my_strlen(char *str)
{
	if (*str != '\0')
		return 1 + my_strlen(str + 1);
	else
		return 0;
}
int main()
{
	char arr[] = "hello";
	printf("%d", my_strlen(arr));;
	return 0;
}

输出结果如下

(3)求n的阶乘(不考虑溢出)

代码如下

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


int Fac(int n)
{
	if (n <= 1)
		return 1;
	else
		return n * Fac(n - 1);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fac(n);
	printf("%d\n", ret);
}

输出结果如下

(4)、求n的斐波那契数

方法一、代码如下

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int Fib(int n)
{
	if (n <= 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n-2);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d\n", ret);
	return 0;
}

输出结果如下

 上种方法可以求出一个斐波那契数,但是效率太低

方法二、

代码如下

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int Fib(int n)
{
	int a = 1;
	int b = 1;
	int c = 0;
	while (n > 3)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d\n", ret);
	return 0;
}

输出结果如下

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值