我需要编写一个递归函数,从用户那里接收一个数字并从该数字打印一个序列,直到1
,然后从1
打印到该数字。
例如:
编号:5
输出:5 4 3 2 1 2 3 4 5
我不能两次调用该函数。
基本上我只是研究了递归函数,所以我对它不太了解。
我知道暂停状况(if
,但不确定这是否是名字)
所以
if(number == 1)
会让我直到1
,这还不够好。
希望有线索而不是解决方案。
答案 0 :(得分:3)
递归函数算法:
输入:要打印序列的数字,请说n
(假设1
是正数> = 1)。
return
。n-1
。如果是n
,则继续执行下一步。print
递归调用函数。for(i=1;i<=n/2;i++)
{
if((n%i)==0)
。递归调用后的n
会在展开堆栈时以相反的顺序给出序列。
答案 1 :(得分:1)
如果num
是唯一参数,请使用num == 1
作为基本案例。
Print num
。递归调用使用num - 1
。
答案 2 :(得分:0)
想想你所知道的以及你需要什么。
更简单的解决方案(一个参数)就是:
input-1
number-1
),依此类推...... 答案 3 :(得分:0)
你在这里。
#include <stdio.h>
void count(unsigned int n)
{
if (n)
{
printf("%u ", n);
count(--n);
if (n) printf("%u ", ++n);
}
}
int main(void)
{
while ( 1 )
{
printf( "Enter a non-negative number (0 - exit): " );
unsigned int n;
if ( scanf( "%u", &n ) != 1 || n == 0 ) break;
putchar( '\n' );
count( n );
putchar( '\n' );
}
return 0;
}
程序输出可能看起来像
Enter a non-negative number (0 - exit): 10
10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10
Enter a non-negative number (0 - exit): 5
5 4 3 2 1 2 3 4 5
Enter a non-negative number (0 - exit): 0
答案 4 :(得分:0)
我觉得有点愚蠢,我在我自己的递归函数上做了很多,从n到1或从1到n打印..但是现在我真的知道订单的含义是什么&amp;通话结束后。
void numToNum(int num) {
if (num == 1)
printf("%d \n", num);
else{
printf("%d \n", num);
numToNum(num - 1);
printf("%d \n", num);
}
}