SlideShare a Scribd company logo
C
Language
C Language Advanced
Lection 23
Содержание
• Рекурсия
• Расчет факториала
• Распределение памяти
23.05.2019 0:36 Advanced 2
Рекурсия
«Для того чтобы
понять рекурсию,
надо сначала
понять рекурсию»
3
Рекурсия
Рекурсия — определение, описание,
изображение какого-либо объекта или
процесса внутри самого этого объекта или
процесса, то есть ситуация, когда объект
является частью самого себя. Термин
«рекурсия» используется в различных
специальных областях знаний — от
лингвистики до логики, но наиболее широкое
применение находит в математике и
информатике.
4
Рекурсия
Рекурсия в программировании – вызов
функции (или же процедуры)
непосредственно из самой себя. Есть
простая (непосредственная) рекурсия или
рекурсия, которая работает через другие
процедуры и функции (такой вид
называется косвенной, сложной
рекурсией).
5
Расчет факториала
6
Расчет факториала
7
Расчет факториала
8
Распределение памяти
9
Распределение памяти
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080015bc, Size: 0x00000468, Max: 0x00020000,
ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x080015bc 0x00000009 Data RW 1714 .data stm32f4xx_hal.o
0x20000009 0x080015c5 0x00000003 PAD
0x2000000c 0x080015c8 0x00000004 Data RW 1984 .data system_stm32f4xx.o
0x20000010 - 0x00000054 Zero RW 19 .bss main.o
0x20000064 0x080015cc 0x00000004 PAD
0x20000068 - 0x00000400 Zero RW 1 STACK startup_stm32f407xx.o
0x20000468 …..
Removing Unused input sections from the image.
Removing startup_stm32f407xx.o(HEAP), (512 bytes).
Removing main.o(.rev16_text), (4 bytes).
Removing main.o(.revsh_text), (4 bytes).
10
Распределение памяти
11
До начала расчета…
Распределение памяти
12
Factorial ( 5 )
Распределение памяти
13
Factorial ( 20 )
Распределение памяти
14
Factorial ( 30 )
Распределение памяти
15
Factorial ( 33 )
Распределение памяти
16
Factorial ( 50 )

More Related Content

More from Roman Brovko

Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
Roman Brovko
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
Roman Brovko
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
Roman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
Roman Brovko
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
Roman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
Roman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
Roman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
Roman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
Roman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
Roman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
Roman Brovko
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
Roman Brovko
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
Roman Brovko
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
Roman Brovko
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
Roman Brovko
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
Roman Brovko
 
C language lect_18_basics
C language lect_18_basicsC language lect_18_basics
C language lect_18_basics
Roman Brovko
 
C language lect_17_basics
C language lect_17_basicsC language lect_17_basics
C language lect_17_basics
Roman Brovko
 
C language lect_16_basics
C language lect_16_basicsC language lect_16_basics
C language lect_16_basics
Roman Brovko
 

More from Roman Brovko (20)

Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
 
C language lect_18_basics
C language lect_18_basicsC language lect_18_basics
C language lect_18_basics
 
C language lect_17_basics
C language lect_17_basicsC language lect_17_basics
C language lect_17_basics
 
C language lect_16_basics
C language lect_16_basicsC language lect_16_basics
C language lect_16_basics
 

C language lect_23_advanced