当不满足if条件的时候,为什么还会进入if中打印倒叙的console.log(n)?

图片说明图片说明

3个回答

你自己打个断点就明白了你是两个console.log

num(n+1, m)相当于把整个方法嵌套进去了一下,所以最终第二个console.log也会打印出来

bairuijin
Barry 007 回复忧郁的皮皮虾: 采纳下
5 个月之前 回复
qq_39280008
忧郁的皮皮虾 懂了,谢谢
5 个月之前 回复

首先,这是一个递归函数(自己调用自己)
当满足 if 条件时,调用自己身,延迟执行后面的console.log(javascript 是单线程),以此类推,这可以解释为什么输出2,3,4,5
当 n = 4时,调用自身,num(5, 5),外部打印5,不满足 if 判断条件,不执行 if 判断当中的内容
此时,n = 4 的递归调用执行结束,内部的console.log 执行,打印 4,以此类推,打印4,3,2
这里有一个需要注意的点:为什么不是一直打印5(毕竟最终 n = 5)
这个和函数的作用域有关,每次内部执行console.log 的时候,都是取自 if 判断处的那个 n 的值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
为什么当while不满足语句条件的时候依然循环
#includern#includernrnusing std::cin;rnusing std::cout;rnusing std::endl;rnusing std::stack;rnrnint main()rnrn int people[200000];rn int N,a,b;rn rn while (cin >> N != 0)rn rn stack couple;rn rn for (int i = 0;i < N;i++)rn rn cin >> a >> b;rn people[a - 1] = people[b - 1 ] = i + 1;rn rn rn for (int j = 0;j < 2 * N ;j++)rn rn if (couple.empty())rn couple.push(people[j]);rn elsern rn if(people[j] == couple.top())rn couple.pop();rn elsern couple.push(people[j]);rn rn rn rn if (couple.empty())rn cout << "Yes" << endl;rn elsern cout << "No" << endl;rn rn rn return 0;rn system("pause");rn rnrnrn当我输入0的时候应该是直接停止吧 可是它输出了yes 也就是执行了最后的几行程序
这个条件为什么不满足?
想把从其他网页传入的参数用到jsp文件的JavaScript代码段的条件语句中,结果判断总失败。非常着急,请问是怎么回事?应该怎么修改?谢谢!!!rnrn================================rntest.jsp:rnrn<%@ page contentType="text/html; charset=GB2312" %>rnrn<% rn String s=request.getParameter("strWord"); //得到参数rn s=new String(v1.getBytes("ISO8859_1"),"GB2312");rn out.println("s:s= "+s+" "); //能正确显示传递参数rn%>rnrnrnrnrn rnrnrn
if条件不满足,但是进入分支执行
IAR编写C程序,按键采用WDT中断累加0.125s判断按下并附键值。发现按下A键再快速按B键,第二次按键仍然起到A键作用。利用中断发现键值为8却进入键值为1的分支里,如图。不知道[img=https://img-bbs.csdn.net/upload/201707/18/1500348147_641165.jpg][/img]
为什么调试的时候if条件不满足也能进去
![图片说明](https://img-ask.csdn.net/upload/201703/22/1490151733_610922.png)rn大家看我控制台输出的两个div高度。 第一个小于第二个 为啥return false 而不是alertrnrn源码rnrnrn```rn rnrnrn rn Titlernrnrnrnrnrn rn task2-5rn rnrnrn rn rn rn rn rn rn rn rnrn rnrnrn rnrnrnrnrn```rnrn
不满足条件也提示
[code=Java]rnrn rnrnrn[/code]
new class的时候, 在构造函数中发现条件不满足,怎么办?
class arnrna()rnrnfailed!rnrn~a()rnrnrnrnrna* p =new a;rnrn由于构造函数发现条件不满足,最好注销这个类, 因此最好的办法是让 p 等于 NULL, 可以实现不?
10.链表-倒叙打印
输入一个链表,从尾到头打印链表每个节点的值。  除了可以用翻转链表外,还有两种方法,递归与栈。重点讲一下递归的(渣渣思考了挺久的):package facehandjava.Linked; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; ...
整数倒叙打印的问题
输入一个整数,要求倒叙打印输出。例如输入123,要求输出321. 还有个要求是使用递归。 思路:递归首先考虑终结条件,应该是在整数n/10等于零,表示打印了最高位,就终结了。其他情况应该继续调用函数。 程序如下: #include &amp;lt;cstdio&amp;gt; void printa(int n) {     if(n&amp;lt;0) {         printf(&quot;-&quot;);       ...
console.log() 如何打印对象
console.log(JSON.stringify(object));
为什么有OnPaint还会进入DefwindowProc()?
我响应了OnPaint(),然后又在DefwindowProc中if(Message==WM_PAINT){……}([color=#FF0000]仅为测试[/color])为什么还是会进入到这个if中去?rn不是说如果响应了,不是OnWndMsg就会返回True吗?这样的话rnif (!OnWndMsg(message, wParam, lParam, &lResult))rn lResult = DefWindowProc(message, wParam, lParam);rn不就不会进入到DefWindowProc了,我的理解是不是哪里出错了,指教,谢谢!!
如何删除不满足条件的记录
这里有一张表rn商品编号 单价rn1 1000rn1 2000rn1 3000rn2 100rn2 500rn2 300rnrn如何只保留同一个商品编号的最小单价的那条记录,将其他不满足条件的记录删除。rn这个sql 怎么写?
如何删除不满足条件的记录?
把库1中的记录删除rn条件:库1.dbo.表1.字段<>库2.dbo.表2.字段rn下面代码说"无法绑定由多个部分组成的标识符库2.dbo.表2.字段"rndeleternfrom 库1.dbo.表1rnwhere (库1.dbo.表1.字段<>库2.dbo.表2.字段)rnrnrn
如何查询数据表中不满足条件的记录?
我有一个表rnrncode | namern0101 XXrn0102 XXrn0201 XXrn0102 XXrn0301 XXrn0302 XXrn0401 XXrnrn数据类似这样的,我想写一条语句查询出rnrnCODE字段不是以01或02开头的记录rnrn也就是把0301,0302,0401查询出来.rnrn不知道有没有合适的方法rnrn谢谢大家
能不能让toolbutton下拉列表不满足条件的时候就不自动弹出?
我想实现的功能其实是一个简单的权限管理问题,当用不是管理员帐户登录时点击系统维护的toolbutton时就弹出权限不够,然后返回,我用messagebox,但是弹出提示信息后toolbutton还是会自动弹出下拉菜单rnrn我是新手,希望高手们说得尽量详细点啊,为了做课设头都快炸了啊。 先说声谢谢啦
如何对一些操作当应用进入前台的时候启动,当应用进入后台的时候停止
//注册程序进入前台通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (startTimer1) name: UIApplicationWillEnterForegroundNotification object:nil];       //注册程序进入后台通知  [[NSNotifica...
用泛型List倒叙打印
用泛型List倒叙打印,就是说获取集合中的 key,value值的方法
console.log 打印的值不准确
console.log 不服预期 有些时候在使用·console.log() 打印对象的时候,打印出来的值不符合预期。这是为什么呢? 有一种说法是:console.log() 是一个异步的方法,浏览器在处理的时候对于这种读取 i/o 的操作一般会放到比较靠后的位置去处理。所以有些时候打印出来的值不符合预期。 还有一种说法是,当在打印一个对象的时候,由于对象中的值是引用的内存中的值,所以就会存...
console.log 打印提示 object 解决方案
console.log(JSON.stringify(data)) 如果你ajax请求后返回值是 data 那这样就可以转换成字符串 了
console.log 打印提示 object 解决方案
在js 调试中,如果console 要打印出是 object  ,但是要显示 一个对象的详细信息 可以用以下方法 window.console.log(JSON.stringify(obj));
为什么不满足条件 还是进入if 输出了用户名格式错误QAQ
进入格式检查 个个变量的值rn[img=http://img.my.csdn.net/uploads/201212/02/1354438567_2608.jpg][/img]rnrn可是strlen($username)=9rnresult1=1rn还是会跑进if里面rn输出用户名格式错误[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/1.gif][/img]rn[img=http://img.my.csdn.net/uploads/201212/02/1354438827_9467.jpg][/img]rnrn整段代码里只有这一段“用户名格式错误”rn[/img][img=http://img.my.csdn.net/uploads/201212/02/1354438665_3306.jpg][/img]rnrn[code=php]rn $value)rn if(empty($value))rn exit('非法访问!');rnrnforeach ($posts as $key => $value) rn $posts[$key] = trim($value);rnrnrequire ('dbconfig.php');rn//注册rnfunction register($username,$password,$email)rn $query = "insert userdata values('". $username ."','". $password ."','". $email. "')";rn $result=mysql_query($query);rn if(!$result)rn exit('注册失败!papap');rn //die('注册失败'. mysql_error());rn rn elsern echo "注册成功!";rn rnrn//检查用户名,密码,邮箱格式rnfunction verifyFormat($username,$password,$email)rn $result1=preg_match("/^[\x4e00-\x9fa5]+$/u", $username);rn if(strlen($username)<1 || strlen($username)>16 || result1==0)rn echo "用户名格式错误!";rn return false;rn //die("用户名格式错误!");rn rnrn $result2=preg_match("/^\w+$/u", $password);rn if(strlen($password)<6 || strlen($password)>17 || result2==0)rn echo "密码格式错误!";rn return false;rn //die("密码格式错误!");rn rn rn $result3=preg_match("/^[a-zA-Z\d]+@[a-zA-Z\d]+\.[com|cn|com.cn|net]+$/u", $email);rn if(result3==0)rn echo "邮箱格式错误!";rn return false;rn //die("邮箱格式错误!");rn rn return true;rnrn$flag=verifyFormat($posts['username'],$posts['password'], $posts['email']);rnif($flag)rn register($posts['username'],$posts['password'], $posts['email']);rnelsern die("注册失败!!..");rn?>rn[/code]rnrn
错在那里,为什么不正确执行,那个条件不满足?
这段代码在写成函数后不能正确执行,为什么?rnrnrnrnrn删除所有短信 ";rnif($action == "delall" && $touser ==$loginname)rnrnconnect_db();rnrn$sql = "delete from messages where touser='$loginname'";rn$result = mysql_query($sql) or die (mysql_error());rnjump_page('privatemessage.php','删除成功',' 状态:私人短信已经被成功删除 返回程序');rnrn$content="rnrn程序需要您确认这次操作: rnrn rnrn真的要继续吗? ";rnrn$content.="rn rnrnrnrnrnrn";rnmsg_box($title,$content);rnecho "";rnrnfooter();//显示版权信息rnrn?>rn这段代码执行到 “确认并继续“ 和“返回上一页“ 当你点“确认并继续“时 ,程序不执行删除操作。rn在没有封装成函数时可以顺利执行删除操作。rnrnrnrnrn删除所有短信 ";rnif($action == "delall" && $touser ==$loginname)rnrnconnect_db();//connect the databasernrn$sql = "delete from messages where touser='$loginname'";rn$result = mysql_query($sql) or die (mysql_error());rnjump_page('privatemessage.php','删除成功',' 状态:私人短信已经被成功删除 返回程序');rnrn$content="rnrn程序需要您确认这次操作: rnrn rnrn真的要继续吗? ";rnrn$content.="rn rnrnrnrnrnrn";rnmsg_box($title,$content);rnecho "";rnrnfooter();//显示版权信息rn?>rn我检查了一下,没发现错误。请您指点一下!谢谢!rn rn
console.log
无意间发现:rnvar a=null;rnvar b;rnconsole.log('a==b:'+a==b);//结果只有一个false,a==b: 也没有打印rnconsole.log(a==b);//结果是truernrn求解
java中while使用if - continue语句,条件不满足时,依然进入if中。
1.代码如下rnclass Problem03rnrn public static void main(String[] args)rn rn int result = 0;rn rn while (true)rn rn //System.out.println("while start");rn if(result == 5)rn rn System.out.println(result);rn result = 6;rnrn continue;rn rn rn /*if(result == 10)rn rn break;rn rn */rn result ++;rn // System.out.println("while end");rn rn rnrn2.运行结果rn一直进行 if(result == 5)rn rn System.out.println(result);rn result = 6;rnrn continue;rn rn的运行。rn3. 将 /*if(result == 10)rn rn break;rn rn */rn的注释去掉,运行正常。
startActivityForResult 不满足触发条件就返回的检测
       在android开发中,当不满足触发条件就按返回键的时候,就要对此进行检测。尤其是当前Activity需要往前一个Activity传送消息时。即Activity1跳转到Activity3如果采用的是startActivityForResult这种方式,如果不重写返回键,程序不知道要返回给Activity1什么内容就会报错。因此,必须对Activity3的返回按键重写。 @Over...
while函数实现不满足条件后重新输入
在很多情况下,想要输入规定的字符(或数字),不符合规定的就报错,然后重新输入,这样就没必要重新编译运行一遍了,代码示例如下: while(1) { if (a&gt;0&amp;&amp;a&lt;10) break; //满足需要的条件,跳出循环 printf("输入错误,请重新输入:");//不满足条件,报错,继续输入 } 举个栗子: #include "stdio.h" void ...
SELECT查询不满足条件的结果怎么写
RT,数据库有一个表。rn有几条查询条件。rn我现在想知道要是想查询在这个表不满足那几条查询条件的SQL语句怎么写。
[元旦和女友去哪玩呢?]在提交的时候,当条件不满足的时候,则不提交,如何用VBS实现呢?
如题,例如:rn我删个记录的时候,提示“确实要删除吗?”点击确定则提交,点击取消,则保持不提交。rnrn或者提交留言时,姓名栏没有填写,则提示“姓名没有输入完整”,然后将焦点转移到姓名的文本框rn(txtName)里面去,rn请问大家这如何实现,最好是VBS的代码!rn谢谢大家多多指教了!!rnrn----rnrn我和我的女朋友元旦去“南京”玩。rnrn----rnrnhttp://community.csdn.net/Expert/topic/3686/3686083.xml?temp=.6815912rn还有这里的问题,大家也可以帮我指点指点啊!多谢大家了。rnrn----rnrn为了保持一种亲切感,附上我的一张照片的连接,见笑了。rn^_^rnhttp://qz333.com/bbsxp/images/upface/16039.gifrn----rnrn希望能很快看见大家的回答!rn---
练习五1002不满足条件的三位数
练习五1002描述编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2位数字相同 例如,100同时满足上面两个条件。输入输入一个数n,n的大小不超过实际满足条件的3位数的个数。输出输出为第n个满足条件的3位数(升序)样例输入1样例输出100代码:#include&amp;lt;iostream&amp;gt; #include&amp;lt;cmath&amp;gt; u...
怎样在条件判断后,如果不满足条件退出程序?
一个函数中,需要在不满足判断条件的情况下显示错误信息然后退出程序,写了如下代码:rnrn[code=C/C++]rnint TestCode::testProgram(const int &test)rn...rnrnif (i <= 3)rn m[n] = i;rnelsern rn cerr << "Error of the input!" << endl; rn return EXIT_FAILURE;rn rnrn...rnrn[/code]rnrn但是此时函数的返回值必须是int,因为返回了EXIT_FAILURE。如果我想把函数返回值定义为vector或别的类型,怎样办呢?谢谢!
Linux rm 删除不满足条件的文件
rm -fr !(re*)  删除不以re开头的所有文件以及目录 应用: 服务器中Log 文件过多,需要过滤删除一些不需要的Log文件,输出2018年以前的Log(Log文件以日期命名) $ ls -al 总用量 28 drwxrwxr-x 7 www-data www-data 4096 9月 3 13:20 . drwxr-xr-x 6 www-data www-data 4096...
for循环首次不满足条件便退出
for (expr1; expr2; expr3) { statement } 第一个表示式只在循环开始前执行一次并且无条件执行。 第二个表示式从第一次执行循环开始就在循环开始前运行做一次判断该表达式布尔值,是真就执行循环,是假就中断。如果第一次循环第二个表达式就是假,直接不执行for体。 第三个表达式从第一次执行循环开始就在每次循环结束后执行一次。 如:for(int i=0; i&lt;4 &...
如果不满足条件则返回new 实体
var objEntity = ResultEntityList.SingleOrDefault(item => return item.Year == 4; );rn但不满足条件时候,objEntity=null,但是我想让不满足条件时候objEntity = new CmsPriceEntity()rnrnrn想问,有现成的方法吗?
不满足
不满足是一个人进步的阶梯。    你若是把目标定在班级排名上,那你可能只能校内保研。    你若是把目标定在系里的排名上,那么你可以保校外。    如果你把目标定成清华北大,那么你很有可能能保上。    如果你把目标定成国外或者领导者,那么你就能去清华北大了。    何妨踯躅且前行。    我不信,到了我们这一代,还是比不过他们。    只是不想和他们为伍。只是不甘心。时间说长也不长
oracle的“不满足”某个条件该怎么写
比如,我想写一个语句ninsert into t1(t1.a,t1.b)nselect (t2.a,t2.b) from t2 “不满足” n(t2.a=t1.a and t2.b=t1.b);n以上,求大神解惑。
查询结果不满足where子句条件限制
有如下sql:rnselect ddbh,id from kh_khddhdb where ddbh = 'd11111' or id = 'i22222';rn表中只有一条数据满足条件,但是查询出来的结果却出现了两条,另一条根本不满足条件:rnddbh idrnd11111 i22222rnd11110 i33333rnrn从数据上讲,不应该出现这种问题。但是偏偏出现了。第一感觉是跟索引有关。oracle不会傻到从表里扫描数据都搞错,表没问题,那就是索引了。因为按我的理解,索引存储的是指向记录的物理路径始块,如果出现地址指向错误,就可能会出现这个问题。rnddbh和id两个字段上都有索引,于是尝试一个个的排除:rnselect ddbh,id from kh_khddhdb where id = 'i22222';rn执行上面的sql结果如下:rnddbh idrnd11110 i22222rn居然取到了另外一条记录的ddbh,这就基本可以认定id上的索引有问题了。rn求稳当又单独用ddbh=‘d11111’条件查了一下,结果没有问题。看来问题确实出在id字段的索引上。rn对索引analyse后,问题还是存在。rn由于问题出现在客户一笔紧急交易上,而且是业务不繁忙的时间,经过沟通决定重建索引。先用rebuild,没用。只好drop掉id字段的索引重新create。果然问题解决了。(客户数据量小,出问题的表只有几十万条记录,所以才敢这么搞)rnrn但是为什么会出现这个问题呢?oracle的索引如果不可靠,那也不可能被市场认可啊,到底是哪里出了问题?rn还请诸位高手指点一下我应该从哪些方面下手查找问题的根本原因
不满足条件就循环到条件满足为止,改怎么写?
如题!
VC++:不满足条件仍然执行条件里面的语句
急!!!rn请教一个VC++的问题,调了好几天了,终于在这里发现了问题,但百思不得其解rn调试程序的时候发现:rnrnrncout<<"当前节点"<
为什么int n=0;n=n++;打印n等于0
int n=0;rnfor(int i=0;i<50;i++)rnrn n=n++;rnrnSystem.out.println("n="+n);rnrn最后打印为0;rn请各位大哥告诉这是为什么啊????
lock了 为什么还会出错?
[color=#FF0000]文件“Z:\Carvp.exe”正由另一进程使用,因此该进程无法访问该文件。[/color]rnrn[code=C#]rnpublic static object lockobj = new object(); rnvoid main()rnrn lock (lockobj)rn rn using (System.IO.FileStream sw = new System.IO.FileStream(f, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite))rn rn sw.Position = e.DownloadState.Position;rn sw.Write(e.DownloadState.Data, 0, e.DownloadState.Data.Length);rn sw.Flush();rn sw.Close();rn rn rn[/code]
循环为什么还会运行?
我在一个对话框里写一个循环:rnrnMSG message;rnfor(int i = 1; i <= 100000;i++)rnrn //do something;rn if(::PeekMessage(&message,NULL,0,0,PM_REMOVE))rn rn ::TranslateMessage(&message);rn ::DispatchMessage(&message);rn rnrn当我关闭对话框时,这个循环还在执行,请大虾们给我讲解一下为什么。多谢了rn
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法