迭代(循环)与递归(调用)对比
(1)二者都是建立在控制结构基础上的,迭代使用的是循环结构,递归使用的是选择机构;
(2)二者都用到了循环,迭代明确使用循环结构,递归通过反复调用函数实现循环;
(3)二者都用到了终止条件测试,迭代在继续循环条件为假时结束,递归在到达基本实例时终止的。
(4)二者都可能是无限的。
递归举例
1、阶乘 N!=N*(N-1)*...*2*1
long factorial(long number)
{
if(number<=1)
return 1;
else
return (number*factorial(number-1));
}
2、求和N+(N-1)+(N-2)+...+2+1
int sum(int number)
{
if(number<=0)
return 0;
else
return (number+sum(number-1));
}
关键字:C51 递归调用 程序设计
引用地址:
C51学习心得体会,递归调用程序设计举例
推荐阅读最新更新时间:2024-03-16 15:51
用PWM控制渐变七彩灯C51程序
一、硬件介绍: (采用5050LED 2W) RGB三色LED控制引脚分别为单片机P1.2 、 P1.1 、 P1.0。LED正极接主电源(24V)正极,负极接驱动3颗三极管的集电极,单片机控制脚分别接3颗NPN三极管,三极管发射极接地,而单片机的供电是来自三端稳压器7805,祥细原理如下: 二、实物图片: 三、软件部分: 1、/*原理: 先亮红灯(保持一会儿)----红绿过度(绿加1、红减1循环240次)------ 绿灯亮起(保持一会儿)----绿兰过度(兰加1、绿减1循环240次) -----兰灯亮起(保持)-----兰白过度(绿加1、红加1循环240次、兰不变) ---白红过度,技术支持网站:
[单片机]
单片机c语言教程:C51运算符和表达式(指针和地址运算符)
我们学习数据类型时,学习过指针类型,知道它是一种存放指向另一个数据的地址的变量类型。指针是单片机C语言中一个十分重要的概念,也是学习单片机C语言中的一个难点。对于指针将会在第九课中做详细的讲解。在这里我们先来了解一下单片机C语言中供给的两个专门用于指针和地址的运算符: * 取内容 & 取地址取内容和地址的一般形式分别为: 变量 = * 指针变量 指针变量 = & 目标变量 取内容运算是将指针变量所指向的目标变量的值赋给左边的变量;取地址运算是将目标变量的地址赋给左边的变量。要注意的是:指针变量中只能存放地址(也就是指针型数据), 一般情况下不要将非指针类型的数据赋值给一个指针变量。 下面来看一个例子,并用一个图表和实
[单片机]
单片机C语言C51的数据类型
C51的数据类型分为基本数据类型和组合数据类型,情况与标准C中的数据类型基本相同,但其中char型与short型相同,float型与double型相同,另外,C51中还有专门针对于51单片机的特殊功能寄存器型和位类型。 一.字符型char 有signed char和unsigned char之分,默认为signed char。它们的长度均为一个字节,用于存放一个单字节的数据。 对于signed char,它用于定义带符号字节数据,其字节的最高位为符号位,“0”表示正数,“1”表示负数,补码表示,所能表示的数值范围是-128~+127; 对于unsigned char,它用于定义无符号字节数据或字符,可以存放一个字节
[单片机]
谈谈自学C51单片机的一些见解仅作参考
学习C51有半个月多了,在这短短的半个月里,虽说没有每天都在学,都是至少投入的时间还是跟天数成正比的。幸运的是有C语言和汇编的知识做基础,学习 C51还是满上手的。在这半个月中,通过不断的学习基础知识和练习例子,到最后还是取得一定的成功,从什么都不会到会写一个简单的跑马灯程序,再到花样流水灯,电子琴设计,数码管显示,按键扫描,点阵输出,中断,定时和串口初步设计,最后到LCD1602驱动程序设计,DS1302时钟电路驱动程序设计,那种渐进的感觉真的会让你充斥着一种无比的自豪感和成就感,让你忍不住想把这种感觉带给别人,让别人看到你的成就。 说真的,当你学会C51,我想你不会再用汇编编程了,这种现象足以说明C语言相对于汇编的
[单片机]
模拟I2C总线软件包(C51)
/****************************************************************************** I2C.H 标准80C51模拟I2C总线程序头文件 ******************************************************************************/ #ifndef I2C_H #define I2C_H //定义I2C操作模式 #define I2C_RECV 0 /* 接收模式 */ #define I2C_SEND 1 /* 发送模式 */ #define I2C_SrRECV 2
[单片机]
自动售货机控制模块 VHDL 程序设计及 FPGA 实现
近年来,随着集成电路技术的迅猛发展,特别是可编程逻辑器件的高速发展, EDA(Electronic Design Automation,电子设计自动化)技术成为电子设计工程师的新宠。EDA技术以计算机为工具完成数字系统的逻辑综合、布局布线和设计仿真等工作。电路设计者只需要完成对系统功能的描述,就可以由计算机软件进行系统处理,最后得到设计结果,并且修改设计方案如同修改软件一样方便。利用EDA工具可以极大地提高设计效率。 利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是EDA设计方法的一个重要特征。VHDL(Very High Speed Integrated Circuit Hardware Description
[工业控制]
EMS-keil C51常用错误
1. LAB100.C(12): error C216: subscript on non-array or too many dimensions 原程序如下: #include reg51.h #include intrins.h void delay(int); unsigned char code dis_code ={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a}; main() { int i,j; P2=0xff; while(1) { P2=0x7f; for(i=0;i 8;i++) { P0=dis_code ;
[单片机]
STM32F103程序设计-7-引脚输入功能-按键(中断)
AFIO时钟的打开。外部中断、重映射、复用功能?当配置AFIO六个寄存器中的值时就需要打开AFIO时钟。 void EXTI0_Config(void) { /* Enable GPIOA clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* Configure PA.00 pin as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
[单片机]