---
title: MCXRecursive (latest version)
description: API reference for qiskit.circuit.library.MCXRecursive in the latest version of qiskit
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/qiskit.circuit.library.MCXRecursive
---

# MCXRecursive

*class* `qiskit.circuit.library.MCXRecursive(num_ctrl_qubits=None, label=None, ctrl_state=None, *, _base_label=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/standard_gates/x.py#L1114-L1192)

Bases: [`MCXGate`](/docs/api/qiskit/qiskit.circuit.library.MCXGate "qiskit.circuit.library.standard_gates.x.MCXGate")

Implement the multi-controlled X gate using recursion.

Using a single clean ancilla qubit, the multi-controlled X gate is split into four sub-registers, each one of them uses the V-chain method.

The method is based on Lemma 9 of \[2], first shown in Lemma 7.3 of \[1].

**References**

1. Barenco et al., 1995. [https://arxiv.org/pdf/quant-ph/9503016.pdf](https://arxiv.org/pdf/quant-ph/9503016.pdf)
2. Iten et al., 2015. [https://arxiv.org/abs/1501.06911](https://arxiv.org/abs/1501.06911)

Create new MCX gate.

## Methods

**Parameters**

- **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int) *| None*)
- **label** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*)
- **ctrl\_state** ([*int*](https://docs.python.org/3/library/functions.html#int)  *|*[*str*](https://docs.python.org/3/library/stdtypes.html#str) *| None*)

### get\_num\_ancilla\_qubits

*static* `get_num_ancilla_qubits(num_ctrl_qubits, mode='recursion')`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/standard_gates/x.py#L1164-L1167)

Get the number of required ancilla qubits.

**Parameters**

- **num\_ctrl\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int))
- **mode** ([*str*](https://docs.python.org/3/library/stdtypes.html#str))

### inverse

`inverse(annotated=False)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/standard_gates/x.py#L1169-L1184)

Invert this gate. The MCX is its own inverse.

**Parameters**

**annotated** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – when set to `True`, this is typically used to return an [`AnnotatedOperation`](/docs/api/qiskit/qiskit.circuit.AnnotatedOperation "qiskit.circuit.AnnotatedOperation") with an inverse modifier set instead of a concrete [`Gate`](/docs/api/qiskit/qiskit.circuit.Gate "qiskit.circuit.Gate"). However, for this class this argument is ignored as this gate is self-inverse.

**Returns**

inverse gate (self-inverse).

**Return type**

[MCXRecursive](#qiskit.circuit.library.MCXRecursive "qiskit.circuit.library.MCXRecursive")
