`

一道面试题,设计函数f(f(n))=-n

 
阅读更多

  题目是这样的:请设计一个函数f(n),n是int32,让f(f(n))==-n对所有n成立? 要求不允许使用复数类的运算,不限制语言。如果不存在满足整个int32的f(n),那么尽可能让它对更多int32范围的n成立。

   

           大拿的解法是:对于任意正奇数n,构造循环表[n,n+1,-n,-n-1]。这样就把所有数划分成了不相交的表,f(x)只要返回x所在的表中x的后继元素即可。剩下4个数未解决:0, INT_MAX, INT_MIN, -INT_MAX。显然INT_MIN无解。用同样的方法可以干掉INT_MAX和-INT_MAX,代价是f(f(0))=INT_MIN。

 

本题在stackoverflow上面的讨论地址为http://stackoverflow.com/questions/731832/interview-question-ffn-n?answertab=oldest#tab-top

 

        因为没有限制语言,所以我用javascript实现,思路如下:

 

      用c记录调用次数,c%2==0,f(n)=n;c%2==1,f(n)=-n,一定能保证f(f(n))=-n;理解:调用里面的f(n)时,c为奇或偶,奇则f(n)=-n,在调用外层f时c为偶,不变输出-n;如果调用里面f(n),c为偶,则f(n)=n,当调用外层f时,c为奇,取反输出-n。

代码:

var f=(function(){

   var c=0;

   return function(n){

      var ans=(c%2==0?n:-n);

      c++;

      return ans;

 }

})();

 

分享到:
评论

相关推荐

    上海Linux运维工程师-面试题-个人总结).docx

    上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结).docx上海Linux运维工程师-面试题-个人总结)...

    python面试题-2023(面试).docx

    python面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试).docxpython面试题-2023(面试)....

    c语言面试题----main函数

    ### C语言面试题:Main函数详解 #### 题目背景 在C语言编程中,`main`函数是每个程序的入口点。正确理解和编写`main`函数对于编写高质量、可移植性强的程序至关重要。本篇文章将深入探讨C语言中的`main`函数,包括...

    性能测试面试题宝典-覆盖大部分性能专项面试题

    性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖大部分性能专项面试题性能测试面试题宝典--覆盖...

    01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题

    04-Java必知必会108题01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题01-Java公司面试真题 02-Java面试文档 03-大数据面试文档 04-Java必知必会108题01-Java公司面试真题 02-Java面试...

    最新各大公司企业真实面试题-Java面试题

    "Java 面试题及其答案.doc"和"JAVA面试题.doc"提供了大量的面试题及解答,涵盖了从基础知识到高级特性的广泛范围,包括反射、注解、设计模式、Spring框架、数据库操作等。通过这些题目,求职者可以自我评估,了解...

    Java面试题资料合集-44套.rar

    java面试-BIO,NIO,AIO,Netty面试题 35道 java面试-Java+最常见的+200++面试题汇总+答案总结汇总 java面试-Java并发编程最全面试题 123道 java面试-Java集合框架常见面试题 ...java面试-设计模式面试题 14道

    C++面试题集.pdf

    本文档提供了一系列C++面试题,涵盖了内存拷贝、双向链表、费波那其数列、类的构造函数、析构函数和赋值函数、循环、单向链表类的实现、二叉树实现等多个方面的知识点。 内存拷贝 面试题:写一个函数,完成内存...

    大厂面试题第一季-阿里篇-对标阿里P7面试教程

    大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-2.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-3.mp4 大厂...

    fpga笔试面试题解答-集成电路-笔试题-面试题

    fpga笔试面试题解答-集成电路-笔试题-面试题

    Objective-C经典面试题

    在面试题中,getNSString函数返回了一个临时的NSString对象,该对象在函数返回后被自动释放,因此外部使用这个指针的代码可能会遇到未定义行为。这个面试题主要考察应聘者对Objective-C内存管理的理解。 4. 关于预...

    C++面试试题-拷贝构造函数

    ### C++面试试题详解:拷贝构造函数 #### 背景介绍 在C++编程中,拷贝构造函数是一个非常重要的概念,尤其对于那些处理复杂数据结构或资源管理的程序来说更是如此。拷贝构造函数是类的一种特殊成员函数,用于创建一...

    web前端面试题-面试题答案

    web前端面试题-面试题答案

    java程序员面试题150例-java常见面试题-java工程师面试题-java面试题大全

    java程序员面试题150例 java常见面试题 java工程师面试题 java面试题大全 带搜索功能,能非常方便的查找到你想要了解的 java面试题目 推荐大家下载。

    算法大全-面试题-数据结构

    在链表的操作中,还有其他一些常见问题,如查找链表的倒数第N个节点、链表的中间节点、删除链表中的节点等。这些操作都需要对链表的结构有深入的理解,才能高效地实现。 单链表的特殊问题还包括链表是否有环以及...

    WEB-面试题-第三阶段面试真题

    WEB-面试题-第三阶段面试真题 这个资源是关于WEB面试的第三阶段面试真题,涵盖了JavaScript高级知识点,包括构造函数、this指向、函数调用、闭包、setTimeout、apply等方面。下面是对每个问题的详细说明: 1. 构造...

    js常用面试题

    JavaScript是Web开发中不可或缺的一部分,尤其在面试时,掌握这些基本和高级概念至关重要。下面将逐一解析提供的面试题目,帮助你更好地理解JavaScript的核心概念。 1. 求y和z的值是多少? 在这个例子中,两个`add`...

    hadoop2面试题 - 2012腾讯笔试的一道算法题.pdf

    ### hadoop2面试题 - 2012腾讯笔试的一道算法题 #### 背景与题目概述 本文档提供了2012年腾讯笔试中一道关于字符串处理的算法题,该题目要求将字符串中的所有大写字母移动到字符串的末尾,同时保持其他字符的相对...

    java数据库面试题--个人专用

    java数据库面试题--个人专用java数据库面试题--个人专用java数据库面试题--个人专用java数据库面试题--个人专用java数据库面试题--个人专用java数据库面试题--个人专用

    08-谷歌面试题-08-谷歌面试题

    谷歌面试题解析 本资源摘要信息中,我们将对谷歌面试题进行详细的解析和...本资源摘要信息中,我们总结了谷歌面试题中的知识点,包括数据库基本操作、窗口函数、SQL语句优化、数据分析和数据库设计等方面的知识点。

Global site tag (gtag.js) - Google Analytics