递归学习笔记

  1. 递归:程序调用自身的编程技巧称为递归

  2. 递归程序的特点
    (1) 一定都有递归结束条件
    (2) 每次结束一次递归的时候,都会向这个结果靠拢

  3. 递归的使用条件
    在遇到不允许使用循环/不允许创建临时变量时,大多数条件下会用到递归

  4. 递归应用举例
    (1)接受一个整型值(无符号),按照顺序打印它的每一位。 例如: 输入:1234,输出 1 2 3 4.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void traverse(int n) {
	if (n > 9)
		traverse(n / 10);//在n大于9时,调用自身,使n不断接近这个条件
	printf("%d ", n % 10);//打印遍历出的数字
}
int main() {
	int i = 0;
	scanf("%d", &i);

	traverse(i);
	return 0;
}

(2)用递归写求斐波那契数列

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int Fibonacci(int n) {
	if (n == 1)
		return 1;
	if (n == 2)
		return 1;
	return Fibonacci(n - 1) + Fibonacci(n - 2);
	//利用公式,不断调用自身完成递归
}
int main() {
	int i = 0;
	scanf("%d", &i);
	printf("%d", Fibonacci(i));
	return 0;
}

本题利用递归,虽然代码简便,但不建议此种写法,因为此方法运行时会中间变量在不断重复运算,导致程序运行速度缓慢,数列较大时可能引起结果不能得到等问题,这种题目在非必要的情况下,建议采用非递归方式为解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值