循环与递归--不使用if,while,for,do—while语句来输出所有比已知数N小的自然数
2012-12-08 09:58
1236 查看
不用循环的时候,如何用递归解决简单的循环问题!
问题:如何不使用if,while,for,do...while语句来输出所有比已知数N小的自然数。(含0)
这个问题不是我自己想出来的,只是在一个哥们的博客中看到的,这哥们解决这问题的方式居然是用汇编写了个循环。不晓得怎么说他啊。以下是自己在网上搜寻或者自己思考,自己稍加整理的,主要是采用递归,考虑到递归里面最终还会涉及到判断:在不用 if等的情况下,采用了三目运算符。
(1)
(2)要终结递归,必然涉及判断,而判断的实质“真”与“假”(即“1”与“0”).要想判断最终n与0的
(3)根据除法的被除数为0时,异常,退出程序。(不推荐使用)
(4)楼下评论一楼
wohaaitinciu的方法:(表示感谢
)
(5)个人认为比较猥琐的解法:(利用C++中构造函数输出,一个好友提供的解法
)
问题:如何不使用if,while,for,do...while语句来输出所有比已知数N小的自然数。(含0)
这个问题不是我自己想出来的,只是在一个哥们的博客中看到的,这哥们解决这问题的方式居然是用汇编写了个循环。不晓得怎么说他啊。以下是自己在网上搜寻或者自己思考,自己稍加整理的,主要是采用递归,考虑到递归里面最终还会涉及到判断:在不用 if等的情况下,采用了三目运算符。
(1)
#include<iostream> using namespace std; int x=15; int work(int n) { cout<< n-1<<endl; return n-1>0 ? work(n-1):0; } int main(void) { return x>0 ? work(x) : 0; }
(2)要终结递归,必然涉及判断,而判断的实质“真”与“假”(即“1”与“0”).要想判断最终n与0的
void MyPrint(int n) /*输出0---N-1*/ { int flag=1; pirntf("%d ",--n); flag=(n>0); //此处也可写为 flag=n-0; switch(flag) { case 1:MyPrint(n);break; case 0:break; } }
(3)根据除法的被除数为0时,异常,退出程序。(不推荐使用)
#include <stdio.h> #define MAX 15 int boom; void foo(int n) { boom = 1 / (MAX-n); printf("%d\n", n); foo(n+1); } int main(void) { foo(0); return 0; }
(4)楼下评论一楼
wohaaitinciu的方法:(表示感谢
)
#include<iostream> using namespace std; int func(int n) { n && func(n - 1); return printf("%d\n", n); } int main() { func(15); return 0; }
(5)个人认为比较猥琐的解法:(利用C++中构造函数输出,一个好友提供的解法
)
#include <iostream> using namespace std; static int a = 0; class A { public: A() { cout<<a++<<" "; } }; int main( ) { A arr[10]; //定义长度为10的数组 system("pause"); return 0; }
相关文章推荐
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
- Objective-C学习笔记(十)——循环语句for和do-while的使用
- 循环语句的使用——while、do_while、for
- Objective-C学习笔记(十)——循环语句for和do-while的使用
- 在不使用if,while,do...while,for,switch,?:等操作,实现函数void printLess(int k),返回小于k的所有整数
- C语言中循环结构语句 for循环及while,do--while 的使用
- Swift学习——使用if和switch来进行条件操作,使用for,while,和do-while来进行循环(三)
- if条件和for循环语句、while、do..while、switch语法
- 分支语句 循环语句 if,switch,do,while,for分析
- [置顶] 循环语句if(){}else{}、if(){}else if(){}...else{}、do{}while()、for(){}、with(){}break/continue语句
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- if,continue,break,while,do-while, switch,return,foreach,for等条件语句的使用
- 循环控制语句for while do-while if switch
- c++中的结构化语句 判断语句if 分支语句switch 循环语句 while 和 do while 循环语句for的使用
- 第二周 任务四 分别使用for,while,do-while循环语句计算 n!
- 编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止。使用while循环一次读取一个单词,当一个单词连续出现两次是使用break语句终止循环。输出连续重复出现的单词,或者输出一个消息说明没有人任何单词是重复出现的。
- js---javaScript(循环语句的使用实例)for while do....while(转移语句): break, continue , return
- Swift学习——使用if和switch来进行条件操作,使用for,while,和do-while来进行循环(三)
- C#--第2周实验--任务四--编写一个控制台应用--分别使用for,while,do-while循环语句计算 n!
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。