一例递归的使用

最后一道题

当时没做出来

回家想了一下

在家不能上web,今天才拿上来分享一下

函数原形已经给出:int p(int i, int N);

功能:调用该函数,打印如下格式的输出,例p(1, 7);

1

2

3

4

5

6

7

6

5

4

3

2

1

即每行一个数字。(注意:N只打印一次)

要求:

函数中唯一能够调用的函数就是printf。

只使用一条语句,如果你真的不能用一条语句,每增加一条语句扣1分。

不准使用如下的关键字:typedef, enum, do, while, for, switch, case, break, co
ntinue, goto, 

until, if,  ..具体很多我也忘了,反正能用的不多。

不能使用逗号表达式和?:表达式。

标准:(总分10分)

1. 每多一条语句扣1分,即每多一个;就扣1分

2. 每使用一次if或?:扣2分 

3. 每使用一次for,while, swith各扣4分 

评:int proc(int i, int n)
{
   return printf("%d/n",i) && (i == n || (proc(i + 1, n) && printf("%d/n",i)));
}

小心如下的就不能结束递归了.

#include "stdafx.h"
#include "stdio.h"

int proc(int i, int n)
{
 int a= printf("%d/n",i);
 return printf("%d/n",i) && ((proc(i + 1, n) && printf("%d/n",i)) || i == n);
 
}

int main(int argc, char* argv[])
{
 proc(1,7);
 return(0);
}

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值