首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Luhn算法排序

Luhn算法排序
EN

Stack Overflow用户
提问于 2020-01-22 00:35:32
回答 1查看 65关注 0票数 0

我正在对这段代码进行排序:

代码语言:javascript
复制
bool checkLuhn(const string& cardNo) 
{ 
    int nDigits = cardNo.length(); 

    int nSum = 0, isSecond = false; 
    for (int i = nDigits - 1; i >= 0; i--) { 

        int d = cardNo[i] - '0'; 

        if (isSecond == true) 
            d = d * 2; 

        nSum += d / 10; 
        nSum += d % 10; 

        isSecond = !isSecond; 
    } 
    return (nSum % 10 == 0); 
} 

有一个我不知道的谜团。已经用谷歌搜索过了,但仍然是个谜。

该代码:

代码语言:javascript
复制
if (isSecond == true) 
d = d * 2;

在代码程序的什么地方检测到它可以与2拆分?我知道如果它不能被2拆分,程序就把它乘以2。

我理解程序的工作原理,但必须有一些方法或东西来告诉程序什么是isSecond。帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-22 02:22:37

现在我明白了。

在for循环之前,isSecond为false,因为first ordernumber为(0)。然后,此isSecond = !isSecond;将false更改为true。然后轮到二阶isSecond = true; (1),方法将其与2相乘,然后再次变为false,不将数字2相乘,然后变为真,并将数字3相乘。

脑筋急转弯:D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59845506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档