如何将此代码更改为递归函数?

时间:2017-11-10 09:17:38

标签: c recursion

所以,我编写了以下代码,从用户输入的数字倒数到0.我需要帮助我如何获取此代码并将其更改为递归函数。

#include <stdio.h>

int main ()
{

  int count;
  printf ("Please enter a number: ");
  scanf ("%d", &count);

  while (count > -1)
  {
    if (count != 0)
    {
       printf ("%d \n", count);
    }
    else
    {
       printf ("%d\nBlast Off!", count);
    } 

    count--;
}

return 0;
}

5 个答案:

答案 0 :(得分:3)

只需获取基本案例,然后使用修改后的参数再次调用它。这样就可以了解

main

答案 1 :(得分:1)

创建一个带有int。

的函数
self.display.icursor('end')

完成

答案 2 :(得分:1)

要编写递归函数,您需要一个函数终止的基本情况。

void blastOff(int time)
{
    if(time == 0) //Base Case
    {
     printf ("%d\nBlast Off!", count)
     return;
    }
    else
    {
      printf ("%d \n", count);
      blastOff(time -1);          
    }

}

答案 3 :(得分:0)

以下所有代码:

#include <stdio.h>

int regressive(int i){
  if(i == 0){
     printf ("%d\nBlast Off!", i);
     return i;
  }
  else{
     printf ("%d \n", i);
     return regressive(i-1);
  }   
}

int main (){
  int count;
  printf ("Please enter a number: ");
  scanf ("%d", &count);
  regressive(count);
  return 0;
}

答案 4 :(得分:0)

对于根据C标准的初学者,不带参数的函数main应声明为

int main( void )

由于支持该函数仅在其参数具有负值时才执行某些操作,因此将参数声明为具有类型unsigned int是合理的。

该功能可以按照以下方式显示,如演示程序中所示。

#include <stdio.h>

void count_down( unsigned int n )
{

    printf( "%u\n", n );

    n == 0 ? ( void )puts( "Blast Off!" ) : count_down( n - 1 );
}

int main( void )
{
    while ( 1 )
    {
        unsigned int n;

        printf ( "Please enter a number (0 - exit): " );

        if ( scanf ( "%u", &n ) != 1 || n == 0 ) break;

        putchar( '\n' );

        count_down( n );

        putchar( '\n' );
    }

    return 0;
}

程序输出可能看起来像

Please enter a number (0 - exit): 10

10
9
8
7
6
5
4
3
2
1
0
Blast Off!

Please enter a number (0 - exit): 5

5
4
3
2
1
0
Blast Off!

Please enter a number (0 - exit): 0

如果您希望示范程序输出值为0,则只需将while循环替换为do-while循环。例如

#include <stdio.h>

void count_down( unsigned int n )
{

    printf( "%u\n", n );

    n == 0 ? ( void )puts( "Blast Off!" ) : count_down( n - 1 );
}

int main( void )
{
    unsigned int n = 0;

    do
    {
        printf ( "Please enter a number (0 - exit): " );

        n = 0;

        if ( scanf ( "%u", &n ) != 1 ) break;

        putchar( '\n' );

        count_down( n );

        putchar( '\n' );
    } while ( n );

    return 0;
}

程序输出可能看起来像

Please enter a number (0 - exit): 5

5
4
3
2
1
0
Blast Off!

Please enter a number (0 - exit): 0

0
Blast Off!