Использование рекурсивных вызовов в программах на языке Си. Лясин Д.Н - 12 стр.

UptoLike

Составители: 

12
Пример выполнения лабораторной работы.
Написать рекурсивную функцию printd(), печатающую целое число
в виде последовательности символов ASCII (т. е. цифр, образующих
запись этого числа), а также вычисляющую сумму цифр в десятичной
записи числа:
#include <stdio.h>
#include <conio.h>
int printd(int num) /* параметр num - печатаемое число */
{ int i, sumTmp=0;
if (num < 0)
{putchar('-'); num = -num;}
if ((i = num/10) != 0) // пока в числе есть цифры
sumTmp=printd(i); /* Рекурсивный вызов функции */
putchar(num % 10 + '0');//преобразуем цифру числа в
//код символа и выводим на экран
sumTmp+=num%10; //накапливаем сумму цифр
return sumTmp;
начало printd
вход: целый num
выход: целый sumTmp
sum
Tmp
=
0
конец printd
i<>0
num=
-
num
нет
да
Рисунок 4. Блок-схема функции посимвольного вывода целого числа
Вывод ‘-’
нет
num<0
i=num
div 10
да
sumTmp=printd(i)
Вывод кода цифры num mod 10
Пример выполнения лабораторной работы.

     Написать рекурсивную функцию printd(), печатающую целое число
в виде последовательности символов ASCII (т. е. цифр, образующих
запись этого числа), а также вычисляющую сумму цифр в десятичной
записи числа:


                       начало printd
                       вход: целый num
                       выход: целый sumTmp

                               sumTmp=0
                                                      нет
                               num<0
                                                 да
                              Вывод ‘-’

                              num=-num


                           i=num div 10
                                                       нет
                                 i<>0
                                            да
                         sumTmp=printd(i)

                       Вывод кода цифры num mod 10

                   sumTmp=sumTmp+num mod 10

                             конец printd


   Рисунок 4. Блок-схема функции посимвольного вывода целого числа

  #include 
  #include 
  int printd(int num)    /* параметр num - печатаемое число */
  { int i, sumTmp=0;
    if (num < 0)
    {putchar('-'); num = -num;}
    if ((i = num/10) != 0) // пока в числе есть цифры
     sumTmp=printd(i);   /* Рекурсивный вызов функции */
    putchar(num % 10 + '0');//преобразуем цифру числа в
                    //код символа и выводим на экран
    sumTmp+=num%10; //накапливаем сумму цифр
    return sumTmp;



                                          12