提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
接受一个整型值(无符号),按照顺序打印它的每一位。例如:输入:1234,输出 1 2 3 4.
前言
一、什么是递归
程序调用自身的编程技巧称为递归( recursion)。
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接
调用自身的
一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,
递归策略
只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的主要思考方式在于:把大事化小
二、递归应用
1.递归的两个必要条件
存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件
2.例题
接受一个整型值(无符号),按照顺序打印它的每一位。
例如:
输入:1234,输出 1 2 3 4.
例如:
输入:1234,输出 1 2 3 4.
# include<stdio.h>
第一种方法
//void print(int n)
//{
// if (n > 9)
// {
// print(n / 10);
// }
// printf("%d ", n % 10);
//}
第二种方法 (法一法二逻辑上无差别,但是代码形式不同)
//void print(n)
//{
// if (n <10)
// printf("%d", n);
//
// else
// {
// print(n / 10);
// printf("%d", n % 10);
// }
//
//}
主函数
//int main()
//{
// int i = 0;
// printf("请输入:");
// scanf_s("%d", &i);
// print(i);
// return 0;
//}
递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
/#include<stdio.h>
//int main()
//{
// int n = 0;
// int i = 1;
// int j = 1;
// printf("请输入数字:");
// scanf_s("%d", &n);
// for (i=1; i <=n;i++)
// {
// j = j * i;
// }
// printf("%d",j);
// return 0;
//}
//#include<stdio.h>
//int factorial(int n)
//{
// if (n ==1 )
// return 1;
// else
// return n * factorial(n - 1);
//}
//int main()
//{
// int n = 1;
// printf("请输入n:");
// scanf_s("%d", &n);
// printf("阶乘为:%d", factorial(n));
// return 0;
//}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了递归的使用,而递归更重要的是大事化小的思想