c++ 判断奇数偶数实例介绍

到目前为止,看到的递归函数都是直接调用自己。虽然大多数的递归函数都符合这一形式,但其实递归的定义更为广泛,如果某个函数被细分成了几个子函数,那么可以在更深的嵌套层次上应用递归调用。例如:如果函数 f 调用函数 g ,而函数 g 反过来又调用函数 f ,这些函数的调用仍然被看作是递归。这种类型的递归被成为交互递归
下面通过判断一个数是偶数还是奇数来展示交互递归的应用,并且此题突出了递归跳跃的信任的重要性首先,先看奇数和偶数的描述:
如果一个数的前一个数是奇数,那么该数是偶数
一个树不是偶数就是奇数
定义0是偶数
递归跳跃的信任
从代码可以看出,代码的实现是完全基于上面奇数和偶数的描述的三点。初看,这是多么的不可思议。如果想要探索其底层是如何实现的,也只需用一个较少的数字代入,跟踪调用验证就OK
如单纯地从表面看,单凭 “定义0是偶数” 这个简单情景真的没法看出这递归竟然能正确工作。所以,对于没法一下子就能看出的这种情况,我们需要的就是递归跳跃的信任,只要我们递归分解正确和简单情景分析正确,实现细节就不必去担心,交给计算机。也因此,只要掌握了递归的思维,解决一个问题是多么简单和快捷,多么令人震惊


代码如下:

#include <iostream>
using namespace std;
bool isodd(unsigned);
bool isodd(unsigned n)
{
return !(iseven(n));
}
bool iseven(unsigned n)
{
if (n == 0)
{
return true;
}
else
{
return isodd(n-1);
}
}
int main()
{
cout << isodd(11) << endl;
return 0;
}

(0)

相关推荐

  • C++中用栈来判断括号字符串匹配问题的实现方法

    本文实例主要实现:输入一个括号字符串,依次检验,若为左括号则入栈,若为右括号则出栈一个字符判断是否与之相对应,在最后还需判断栈是否为空,如果不为空则不匹配. 首先回顾栈的基本知识: 1.定义栈的结构体并初始化一个新栈: struct stack { char strstack[stacksize]; int top; }; void InitStack(stack &s) { s.top=-1; } 2.出栈和入栈操作: char Push(stack &s,char a) { if(s.

  • C/C++中如何判断某一文件或目录是否存在

    1.C++很简单的一种办法: 复制代码 代码如下: #include <iostream>#include <fstream>using namespace std;#define FILENAME "stat.dat"int main(){     fstream _file;     _file.open(FILENAME,ios::in);     if(!_file)     {         cout<<FILENAME<<&

  • C++判断矩形相交的方法

    本文实例讲述了C++判断矩形相交的方法.分享给大家供大家参考.具体如下: 已知2矩形原点和宽高,判断2矩形相交,相交矩形 相交判断原理: 假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形     rect1{(minx1, miny1)(maxx1, maxy1)}     rect2{(minx2, miny2)(maxx2, maxy2)}  相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐

  • C/C++判断传入的UTC时间是否当天的实现方法

    这里先给出一个正确的版本: 复制代码 代码如下: #include <iostream>#include <time.h> using namespace std; bool IsInToday(long utc_time){ time_t timeCur = time(NULL);    struct tm curDate = *localtime(&timeCur); struct tm argsDate = *localtime(&utc_time); if

  • C++实现判断字符串是否回文实例解析

    本文实例解析了C++判断字符串是否回文的实现过程,通过数据结构中的相关例子,回文判断中采用过滤空格字符.有效字符依次入栈等方法实现该功能. 具体实例代码如下: #include <iostream> using namespace std; #define Max_String_Len 100 #include "SqStack.h" //判断字符串是否回文 bool ispalindrome(char *in_string) { SqStack <char>

  • c++判断是否为目录的示例分享

    复制代码 代码如下: #include<sys/stat.h>#include<unistd.h>int is_dir(char *path){  struct stat buf;  if(lstat(path , &buf) < 0){    return FALSE;  }  int ret = __S_IFDIR & buf.st_mode;  if(ret){    return TRUE;  }  return FALSE;}

  • 从C/C++迁移到PHP——判断字符类型的函数

    在C/C++中,头文件ctype.h中定义了关于字符类型一组宏,可以得到给定字符的类型. 而PHP中没有相关函数.前些天发现在www.mm4.de下载的PHP中提供了一个名为php_ctype.dll的扩展库, 加载后发现提供一部分此类的函数,特整理出来供大家参考.   在PHP中正确加载php_ctype.dll文件后,用<?php phpinfo();?>可以看到以下信息:       ctype   ctype functions enabled (experimental) 然后就可以

  • c++ 判断奇数偶数实例介绍

    到目前为止,看到的递归函数都是直接调用自己.虽然大多数的递归函数都符合这一形式,但其实递归的定义更为广泛,如果某个函数被细分成了几个子函数,那么可以在更深的嵌套层次上应用递归调用.例如:如果函数 f 调用函数 g ,而函数 g 反过来又调用函数 f ,这些函数的调用仍然被看作是递归.这种类型的递归被成为交互递归 下面通过判断一个数是偶数还是奇数来展示交互递归的应用,并且此题突出了递归跳跃的信任的重要性首先,先看奇数和偶数的描述: 如果一个数的前一个数是奇数,那么该数是偶数 一个树不是偶数就是奇数

  • Python 判断奇数偶数的方法

    以下实例用于判断一个数字是否为奇数或偶数: # -*- coding: UTF-8 -*- # Filename : test.py # Python 判断奇数偶数 # 如果是偶数除于 2 余数为 0 # 如果余数为 1 则为奇数 num = int(input("输入一个数字: ")) if (num % 2) == 0: print("{0} 是偶数".format(num)) else: print("{0} 是奇数".format(num

  • JavaScript使用位运算符判断奇数和偶数的方法

    本文实例讲述了JavaScript使用位运算符判断奇数和偶数的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&qu

  • python如果快速判断数字奇数偶数

    这篇文章主要介绍了python如果快速判断数字奇数偶数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用 按位与运算符(&) 将能更加快速地判断一个整数是奇数还是偶数 使用举例如下: def check_number(n): if n & 1: return '奇数' else: return '偶数' # 简单测试: for i in range(-3, 3): print(i, check_number(i)) 不过缺点就是不够直观

  • python对输出的奇数偶数排序实例代码

    我们从小学的时候就学习了奇数偶数,知道整数可以分成奇数和偶数两大类,能被2整除的数叫做偶数,不能被2整除的数叫做奇数.在我们python编程中,会遇到很多数字和代码,有的时候会很乱,不好操作. 在遇到奇数偶数的时候,我们如果对他进行一个排序,有利于我们观看操作,下面,小编教教大家在python中怎么对奇数偶数排序. 示例: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 代码: # 输入:nums =[1,2,3,4] # 输

  • 通过PHP简单实例介绍文件上传

    php文件上传的简单例子,获取文件名称.类型.大小等相关信息,完成文件的上传,供大家学习参考. 1.上传文件的代码: code <?php //判断临时文件存放路径是否包含用户上传的文件 if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){ //为了更高效,将信息存放在变量中 $upfile=$_FILES["uploadfile"];//用一个数组类型的字符串存放上传文件的信息

  • JavaScript判断微信浏览器实例代码

    先给大家说下我的项目需求:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器屏蔽了下载链接,后面和需求方沟通,需求改为如果用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页面,否则下载不了 apk.那么该如何判断用户是否是用微信浏览器呢? 我们知道 js 可以通过 window.navigator.us

  • JS正则表达式判断有效数实例代码

    <script type="text/javascript"> function validate(){ var reg = new RegExp("^[0-9]*$"); var obj = document.getElementById("name"); if(!reg.test(obj.value)){ alert("请输入数字!"); } if(!/^[0-9]*$/.test(obj.value)){ a

  • JS精确判断数据类型代码实例

    这篇文章主要介绍了JS精确判断数据类型代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 普通的判断方式有各种不足,typeof就不说了,判断模糊 constructor这种判断方式是可以,但是也有不足,如果aaa为null或者undefined的时候,代码就会报错 var aaa = {} aaa.constructor === Object //true 下面介绍一种完美的判方式:利用Object.prototype.toString.

  • java isInterrupted()判断线程的实例讲解

    1.说明 isInterrupted()可以判断当前线程是否被中断,仅仅是对interrupt()标识的一个判断,并不会影响标识发生任何改变(因为调用interrupt()的时候会设置内部的一个叫interrupt flag的标识). 2.实例 public static void main(String[] args) throws InterruptedException{ Thread thread = new Thread(()->{ while (true){} }); thread.

随机推荐