如何用Elixir中的指数计算数字?
例如,2 3 将返回8.
答案 0 :(得分:65)
答案 1 :(得分:11)
这是一个尾调用优化的幂函数实现:
def pow(n, k), do: pow(n, k, 1)
defp pow(_, 0, acc), do: acc
defp pow(n, k, acc), do: pow(n, k - 1, n * acc)
答案 2 :(得分:4)
从 v1.12 开始,Integer.pow/2 是实现此目的的方法。
答案 3 :(得分:3)
如果以2为底并且幂是整数,则可以使用函数Bitwise.bsl
进行左移。例如,可以使用以下公式计算2 3 :
> Bitwise.bsl(1, 3)
8
答案 4 :(得分:-1)
这是有效的 - 当我学到足够的知识以确定它的工作原理时,它会很棒 - 可能与封面下的eval有关:
import React, { PropTypes } from "react";
const AddPost = ({ title, content, auth, handleChange, handleSubmit }) => (
<form onSubmit={event => handleSubmit(event, title, content, auth.uid)}>
<input
type="text"
placeholder="title"
value={title}
onChange={handleChange}
/>
<input
type="text"
placeholder="content"
value={content}
onChange={handleChange}
/>
<input type="submit" value="Post" />
</form>
);
AddPost.propTypes = {
title: PropTypes.string,
content: PropTypes.string,
auth: PropTypes.object,
handleChange: PropTypes.func,
handleSubmit: PropTypes.func
};
export default AddPost;